我正在与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)移动得非常缓慢。如何改善代码以使其运行更快?
最佳答案
好吧,问题在于您将游戏的动画留给了keyPressEvent
,而触发的次数却没有您想要的那么频繁。
为了解决此问题,我建议您使用传统方法,该方法涉及具有draw()
场景(及其对象)的功能。这个想法是每隔X毫秒调用一次此函数,并且图形将独立于是否按下某个键而工作。
因此,在这种情况下,只需在keyPressEvent
内部存储所按下的键,然后在Scene::draw()
中实现基于存储的键使用适当的参数调用MoveX()
的逻辑。