2010-12-13 6 views
4

Je travaille sur la création d'un jeu javascript simple et je dois pouvoir vérifier si certaines touches sont pressées. J'ai essayé de lier à l'événement onkeydown, mais le problème que j'ai est double: d'abord, il ne me laissera pas vérifier pour voir si plus d'une clef est pressée à tout moment. Et deuxièmement, il fait une pause après avoir maintenu la touche enfoncée avant de commencer à spammer l'événement.Javascript Checking Keyboard State

Dans mon code, je pourrais avoir un événement, ou une fonction qui vérifie chaque milliseconde pour voir si la touche est pressée. Vu que c'est un jeu, je n'aurais vraiment aucun problème avec l'un ou l'autre. Merci d'avance.

+0

Avez-vous envisagé d'utiliser une bibliothèque javascript pour prendre en charge la liaison? Cela vous aiderait à régler dynamiquement le clavier et le clavier pour vous assurer que le jeu reste réactif. – Mike

+0

Je n'ai vu aucune bibliothèque qui permettrait de vérifier si la touche est enfoncée ou non. J'utilise actuellement jQuery, mais je ne pense pas qu'ils aient cette fonctionnalité. Si vous pouviez suggérer une bibliothèque qui fait cela, je serais très reconnaissant. –

Répondre

6

Vous pouvez utiliser onkeydown et onKeyUp ensemble:

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]; 
} 

avec ce code, vous stockez tous appuyé ce code clé dans la variable pressed et vous supprimer lorsque la touche est relâchée. Donc, quand vous avez besoin de savoir quelles touches sont enfoncées, vous pouvez faire une boucle avec un for (.. in ..) à travers l'objet pressé.

+0

Merci! C'était juste ce que je cherchais. –