2012-06-20 90 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()用適當的參數,基於存儲的密鑰的邏輯。