QT keyPressedEvent слишком медленно?

Я разрабатываю перестрелку с Qt Creator, и моя проблема в связи с 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) движется очень медленно. Как я могу улучшить код, чтобы он двигался быстрее?

1 ответ

Решение

Ну, проблема в том, что вы оставляете анимацию игры наkeyPressEvent, который срабатывает не так часто, как хотелось бы.

Чтобы решить эту проблему, я предлагаю вам использовать традиционный подход, который предполагает наличие функции для draw() сцена (и это объекты). Идея состоит в том, что эта функция вызывается каждые X миллисекунд, и рисунок будет работать независимо от того, нажата клавиша или нет.

Так что в этом случае внутри keyPressEvent вы бы просто сохранили нажатую клавишу, и в Scene::draw() вы будете реализовывать логику, которая будет вызывать MoveX() с соответствующим параметром, основываясь на сохраненном ключе.

Другие вопросы по тегам