2014-04-16 31 views
7

Czy istnieje sposób wyłączenia naciśnięcia klawiszy podczas powtarzania? Pracuję nad grą, a po naciśnięciu klawisza gracze przechodzą do trybu pracy i po zwolnieniu klawisza powracają do trybu stałego. Problem polega na tym, że przy powtarzaniu zdarzeń keyPressEvent() zdarzają się automatycznie zdarzenia keyReleaseEvent(), dzięki czemu gracz natychmiast wraca do trybu stałego po przejściu do trybu działania, co powoduje ponowne wykonanie kroku (którego używam do bieżącej animacji). czy powinienem to anulować?Qt klawisze autorepeating naciskając i zwalniając

+0

Od kiedy tworzysz grę, prawdopodobnie masz pętlę gry. Czy sprawdzanie każdej iteracji następuje po naciśnięciu klawisza? Nie jestem pewien, czy autorelease/press jest funkcjonalnością systemu operacyjnego (chyba). Po prostu zapisz swoje naciśnięcia klawiszy i wydania w zbiorniku podobnym do zestawu (naciśnij -> dodaj, zwolnij -> usuń) i sprawdź każdą iterację pętli, jeśli klucz znajduje się w kontenerze. – OnWhenReady

Odpowiedz

13

Od czasu, gdy oznaczyłeś swoje pytanie Qt, zakładam, że używasz kluczowych zdarzeń Qt - w takim przypadku użyj QKeyEvent::isAutoRepeat(), aby sprawdzić, czy kluczowe wydarzenie jest "prawdziwym" zdarzeniem kluczowym lub zdarzeniem automatycznym.

+0

Dzięki! naprawił mój problem. Chciałem mieć funkcję "wstrzymania" dla zdarzeń na klawiaturze i nie było to możliwe, ponieważ w stanie wstrzymania, wciśnięte i wydane zdarzenia były zawsze wyzwalane. – Morgane