Répétition des touches

Fermé
Anselmedu25 Messages postés 15 Date d'inscription vendredi 1 novembre 2013 Statut Membre Dernière intervention 25 janvier 2014 - 1 janv. 2014 à 23:14
Anselmedu25 Messages postés 15 Date d'inscription vendredi 1 novembre 2013 Statut Membre Dernière intervention 25 janvier 2014 - 8 janv. 2014 à 14:31
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

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 2/01/2014 à 00:13
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:
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
0
Anselmedu25 Messages postés 15 Date d'inscription vendredi 1 novembre 2013 Statut Membre Dernière intervention 25 janvier 2014 3
2 janv. 2014 à 11:21
Merci énormément! J'essaierai ton code au plus vite et je te dirai si il marche.

(Bonne année! :p)
0
Anselmedu25 Messages postés 15 Date d'inscription vendredi 1 novembre 2013 Statut Membre Dernière intervention 25 janvier 2014 3
2 janv. 2014 à 13:27
Hum... Seulement, ou dois-je placer ce code? :/

0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
2 janv. 2014 à 13:37
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 :)
0
Anselmedu25 Messages postés 15 Date d'inscription vendredi 1 novembre 2013 Statut Membre Dernière intervention 25 janvier 2014 3
8 janv. 2014 à 14:31
Ok merci! :) Je vais me debrouiller :)
0