1

私はqtクリエーターと一緒にシューティングゲームを開発していますが、問題はkeyPressEventシーンの機能とのリンクです。

void Scene::keyPressEvent(QKeyEvent *event){
    liste_event << event->key();

    if (liste_event.contains(Qt::Key_Left)) {
        vaisseau->MoveX(-1);
    }

    if (liste_event.contains(Qt::Key_Right)) {
        vaisseau->MoveX(1);
    }
}

コンパイルされますが、私のスプライト(vasisseau)の動きは非常に遅くなります。コードを改善して、より速く移動するにはどうすればよいですか?

4

1 に答える 1

0

問題は、ゲームのアニメーションをに任せていることですkeyPressEvent。これは、必要な頻度でトリガーされません。

draw()この問題を解決するには、シーン(およびそのオブジェクト)に対する関数を使用する従来のアプローチを使用することをお勧めします。この関数はXミリ秒ごとに呼び出され、キーが押されているかどうかに関係なく描画が機能するという考え方です。

したがって、この場合、内部keyPressEventには押されたキーを保存するだけで、保存されたキーに基づいて適切なパラメーターでScene::draw()呼び出すロジックを実装します。MoveX()

于 2012-06-20T16:45:16.510 に答える