2014-04-16 22 views
7

C'è un modo per disabilitare la pressione degli eventi quando si ripetono? Sto sviluppando un gioco e quando premo un tasto, i giocatori entrano in modalità di esecuzione e torna alla modalità in piedi quando viene rilasciata la chiave. Il problema è che con eventi keyPressEvent() ripetuti, ci sono automaticamente eventi keyReleaseEvent(), che fanno tornare immediatamente il giocatore in modalità stand-by dopo essere entrati in modalità di esecuzione, quindi resettare il passo (che uso per l'animazione in esecuzione). Cosa dovrei fare per cancellare questo?Qt tasti di ripetizione automatica premendo e rilasciando

+0

Dato che stai sviluppando un gioco probabilmente hai un ciclo di gioco. Funziona per controllare ogni iterazione se un tasto viene premuto o no? Non sono sicuro che autorelease/press sia una funzionalità del sistema operativo (credo). Basta registrare le chiavi, premere e rilasciare in un contenitore set-like (premere -> aggiungilo, rilascia -> cancellalo) e controlla ogni iterazione del ciclo se la chiave è nel contenitore. – OnWhenReady

risposta

13

Dato che hai taggato la tua domanda con Qt, presumo che tu stia utilizzando eventi chiave Qt - in tal caso, usa QKeyEvent::isAutoRepeat() per verificare se l'evento chiave è un evento chiave "reale" o un evento autorepeat.

+0

Grazie! ha risolto il mio problema. Volevo avere una funzionalità "hold" per i miei eventi di tastiera e non era possibile in stato di attesa, gli eventi premuti e rilasciati venivano sempre attivati. – Morgane