我正在用 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);
}
}
它可以编译,但我的 Sprite (vassisseau) 移动得非常慢。我如何改进代码以使其运行更快?
最佳答案
好吧,问题是您将游戏的动画留给了 keyPressEvent
,它不会像您希望的那样频繁触发。
要解决这个问题,我建议您使用传统的方法,该方法涉及使用 draw()
场景(及其对象)的函数。这个想法是每 X 毫秒调用一次此函数,并且绘图将独立于是否按下键来工作。
所以在这种情况下,在 keyPressEvent
中,您只需存储按下的键,在 Scene::draw()
中,您将实现调用的逻辑MoveX()
根据存储的 key 使用适当的参数。
关于c++ - QT keyPressedEvent太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11115783/