Répétition des touches
Anselmedu25
Messages postés
22
Statut
Membre
-
Anselmedu25 Messages postés 22 Statut Membre -
Anselmedu25 Messages postés 22 Statut Membre -
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!
A voir également:
- Répétition des touches
- Touches rémanentes - Guide
- Touches télécommande tv - Guide
- Comment changer les touches sur roblox - Forum Jeux vidéo
- Je dois appuyer longtemps sur les touches de mon clavier ✓ - Forum Clavier
- Comment enlever le son des touches sur xiaomi ✓ - Forum Xiaomi
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
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 :)