2012-06-20 2 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

키를 누른 상태에서 스프라이트를 계속 움직이는 것이 좋습니다. 나는 Sprite가 움직일 때 그것을 움직이는 QTimer를 시작할 것을 제안 할 것이다. –

+0

keypressevent 함수가 QTimer를 호출해야한다는 의미입니까? – user1312748

+0

예, 키를 놓을 때까지 스프라이트를 계속 움직이게하려는 경우. –

답변

0

글쎄, 게임의 애니메이션을 keyPressEvent으로 남겨 두는 것이 문제이며, 원하는만큼 자주 트리거되지는 않습니다.

이 문제를 해결하려면 draw() 장면 (및 개체) 기능이 있어야한다는 기존의 방법을 사용하는 것이 좋습니다. 이 함수는 매 x 밀리 초 단위로 호출되며, 그리기는 누르는 키와 독립적으로 작동합니다.

그래서이 경우에는 안에 누를 수있는 키를 저장하면됩니다. Scene::draw()에 저장된 키를 기반으로 적절한 매개 변수를 MoveX()이라고하는 논리를 구현합니다.