2010-12-13 6 views
4

Ich arbeite an einem einfachen Javascript-Spiel und muss in der Lage sein zu überprüfen, ob bestimmte Tasten gedrückt werden. Ich habe versucht, an das Ereignis onkeydown zu binden, aber das Problem, das ich habe, ist zweifach: erstens lässt es mich nicht überprüfen, um zu sehen, wenn mehr als eine Taste zu jeder Zeit gedrückt wird. Und zweitens hält es an, nachdem die Taste gedrückt wurde, bevor sie mit dem Spammen der Veranstaltung beginnt.Javascript Tastaturstatus überprüfen

In meinem Code könnte ich entweder ein Ereignis haben oder eine Funktion, die jede Millisekunde prüft, um zu sehen, ob die Taste gedrückt wird. Da dies ein Spiel ist, hätte ich auch wirklich kein Problem damit. Danke im Voraus.

+0

Haben Sie überlegt, eine JavaScript-Bibliothek zu verwenden, um die Bindung zu verwalten? Es würde Ihnen helfen, dynamisch keyup/keydown einzustellen, um sicherzustellen, dass das Spiel reaktionsfähig bleibt. – Mike

+0

Ich habe keine Bibliotheken gesehen, die sich damit befassen würden, zu prüfen, ob die Taste gedrückt ist oder nicht. Ich benutze derzeit jQuery, aber ich denke nicht, dass sie diese Funktionalität haben. Wenn Sie eine Bibliothek vorschlagen könnten, die das tut, wäre ich sehr dankbar. –

Antwort

6

können Sie verwenden onkeydown und onkeyup zusammen:

var pressed={}; 
element.onkeydown=function(e){ 
    e = e || window.event; 
    pressed[e.keyCode] = true; 
} 

element.onkeyup=function(e){ 
    e = e || window.event; 
    delete pressed[e.keyCode]; 
} 

mit diesem Code, den Sie speichern alle Tastencode in der pressed gedrückt Variable und Sie es dann löschen, wenn die Taste losgelassen wird. Wenn Sie also wissen möchten, welche Tasten gedrückt werden, können Sie mit einem for (.. in ..) durch das gedrückte Objekt springen.

+0

Danke! Das war genau das, wonach ich gesucht habe. –