Répétition des touches
Anselmedu25
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
Anselmedu25 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Anselmedu25 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je suis en train de créer un petit jeu ou l'on doit déplacer un personnage, en langage JavaScript grâce à l'élément Canvas d' HTML5. Seulement, je ne trouve pas le moyen de faire déplacer le personnage relativement rapidement de manière fluide en restant appuyé sur une des flèches. (Tant qu'on reste appuyé, il avance.) J'aimerais savoir si il existe une fonction de répétition des touches, comme dans SDL un truc comme Keyrepeat_ ... Merci de votre aide!
4 réponses
Salut, faut trouver une parade à ce comportement, vu qu'il dépend des paramètres du clavier de l'utilisateur, et qu'il n'existe pas de fonction pour imiter ça.
Donc dans ton JS, il faut faire joujou avec le keydown et keyup ainsi qu'un Timeout, exemple:
Pas testé, je sais pas si ça marchera du premier coup ;)
EDIT: corrigé le code, ça marche
Précision: ça gère plusieurs touches à la fois
Mais c'est loin d'être parfait
from human import idiocy
del idiocy
Donc dans ton JS, il faut faire joujou avec le keydown et keyup ainsi qu'un Timeout, exemple:
var attenteRepet = 500, intervalleRepet = 100; var timeoutRepet = []; window.onkeydown = function(event) { gererAppuiTouche(event.keyCode); if (!timeoutRepet[event.keyCode]) { timeoutRepet[event.keyCode] = setTimeout(function(){gererRepetition(event.keyCode);}, attenteRepet); } } function gererRepetition(keyCode) { gererAppuiTouche(keyCode); timeoutRepet[keyCode] = setTimeout(function(){gererRepetition(keyCode);}, intervalleRepet); } window.onkeyup = function(event) { if (timeoutRepet[event.keyCode]) { clearTimeout(timeoutRepet[event.keyCode]); } }
Pas testé, je sais pas si ça marchera du premier coup ;)
EDIT: corrigé le code, ça marche
Précision: ça gère plusieurs touches à la fois
Mais c'est loin d'être parfait
from human import idiocy
del idiocy
Hum... Seulement, ou dois-je placer ce code? :/
Ce code n'était qu'un exemple de ce que tu peux faire pour simuler une répétition; je l'ai fait à la va-vite et c'est juste a titre indicatif. Tu ne peux pas placer ce code directement dans le tien, il faut que tu l'adaptes: ça dépend de comment tu gères déjà les touches, de comment le script est chargé, etc...
Donc y'a pas de réponse directe à cette question :)
Donc y'a pas de réponse directe à cette question :)