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()
с соответствующим параметром, основываясь на сохраненном ключе.