Gestion clavier JS

Hwaster Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
codeurh24 Messages postés 760 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous,

alors voila, je cherche a réaliser un petit jeu 2D en JS (jquerry) pour mon projet de fin d'année.

Mais j'ai des problèmes pour la gestion du clavier: je cherche a savoir quand le joueur appuie sur la touche et quand il la relâche. Mon problème étant qu'en gardant la touche enfoncée, la fonction est appelé en boucle. Existe t-il d'autres écouteurs? Ou est que je doit gérer sa avec des booleans?


function initialiser(evt){ 
 $(document).keydown(keyD);
 $(document).keyup(keyU);
}
function keyD(evt){
 switch(event.keyCode){
  case 39:
   perso.droiteD();
   break;
  case 37:
   perso.gaucheD();
   break;
  case 38:
   perso.jump();
   break;
 }
}
function keyU(evt){
 switch(event.keyCode){
  case 39:
   perso.droiteU();
   break;
  case 37:
   perso.droiteD();
 
 }
}



Merci d'avance
A voir également:

2 réponses

Utilisateur anonyme
 
Déjà indente ton code, sinon on va plus s'en sortir et ensuite recherche bien 10 minutes sur Google, c'est très bien fourni là-dedans.
0
codeurh24 Messages postés 760 Date d'inscription   Statut Membre Dernière intervention   123
 
Oui tu est sur la bonne voie.

Le problème c'est que les appels des actions du perso ce fait quand la touche est enfoncé, ce qui fait que quand tu reste enfoncé ça fonctionne en boucle. Il te faut une variable booléen pour stopper cette boucle.

ta fonction keyU est a modifier pour permettre a n'importe quel touche de passer la variable a true.

tant que la variable est a false l'action du perso dans keyD ne se répétera pas
0