我正在用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)移动得非常慢。如何改进代码以使其更快地移动?
答案 0 :(得分:0)
嗯,问题在于您将游戏动画留给了keyPressEvent
,而这种动画并没有像您希望的那样频繁触发。
为了解决这个问题,我建议你使用传统方法,它涉及到draw()
场景(及其对象)的函数。我们的想法是每隔X毫秒调用一次这个函数,绘图将独立于被按下的键而工作。
因此,在这种情况下,在keyPressEvent
内部,您只需存储已按下的键,在Scene::draw()
中,您将实现将使用适当参数调用MoveX()
的逻辑在存储的密钥上。