2012-06-20 88 views
1

我开发使用Qt创建者史密斯先生,我的问题是我的场景keyPressEvent功能的链接:QT keyPressedEvent太慢了?

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

它看起来像你可能想要的是继续移动精灵而按下键。我会建议开始一个QTimer,它会在精灵发生火灾时移动它。 –

+0

你的意思是keypressevent函数必须调用QTimer吗? – user1312748

+0

是的,如果你想让精灵继续移动直到释放键。 –

回答

0

那么,问题是,你正在离开游戏的动画keyPressEvent,这是不经常触发你想要的。

为了解决这个问题,我建议你使用传统的方法,它涉及具有draw()场景(和它的对象)的功能。这个想法是,这个函数每X毫秒被调用一次,并且绘图将独立于按下或不按下的按键来工作。

因此,在这种情况下,内部keyPressEvent你只存储按下的键,并在Scene::draw()您将实现将调用MoveX()用适当的参数,基于存储的密钥的逻辑。