Je recherche un KeyListener
pour un jeu que je développe en JavaScript. Je n'ai aucune idée de comment cela fonctionnerait dans du vrai code mais ce serait quelque chose comme ceci:
if(keyPress == upKey)
{
playerSpriteX += 10;
}
else if(keyPress == downKey)
{
playerSpriteY -= 10;
}
etc...
Je l'ai recherché et Google a trouvé des choses qui impliquaient AJAX que je ne comprends pas encore. Existe-t-il une fonction intégrée en JavaScript qui fait cela?
Voici une mise à jour pour les navigateurs modernes en 2019
let playerSpriteX = 0;
document.addEventListener('keyup', (e) => {
if (e.code === "ArrowUp") playerSpriteX += 10
else if (e.code === "ArrowDown") playerSpriteX -= 10
document.getElementById('test').innerHTML = 'playerSpriteX = ' + playerSpriteX;
});
Click on this window to focus it, and hit keys up and down
<br><br><br>
<div id="test">playerSpriteX = 0</div>
Réponse originale de 2013
window.onkeyup = function(e) {
var key = e.keyCode ? e.keyCode : e.which;
if (key == 38) {
playerSpriteX += 10;
}else if (key == 40) {
playerSpriteX -= 10;
}
}
Le code est
document.addEventListener('keydown', function(event){
alert(event.keyCode);
} );
Cela renvoie le code ascii de la clé. Si vous avez besoin de la représentation de clé, utilisez event.key (Cela renverra 'a', 'o', 'Alt' ...)
Si vous ne voulez pas que l'événement soit continu (si vous voulez que l'utilisateur doive relâcher la clé à chaque fois), changez onkeydown
en onkeyup
window.onkeydown = function (e) {
var code = e.keyCode ? e.keyCode : e.which;
if (code === 38) { //up key
alert('up');
} else if (code === 40) { //down key
alert('down');
}
};
Avez-vous vérifié la petite bibliothèque Mousetrap ?
Mousetrap est une bibliothèque simple pour gérer les raccourcis clavier en JavaScript.
Une comparaison un peu plus lisible se fait en castant event.key
en majuscules (j'ai utilisé onkeyup - il fallait que l'événement se déclenche une fois à chaque pression de touche):
window.onkeyup = function(event) {
let key = event.key.toUpperCase();
if ( key == 'W' ) {
// 'W' key is pressed
} else if ( key == 'D' ) {
// 'D' key is pressed
}
}
Chaque clé a son propre code, extrayez-la en affichant la valeur de la variable "clé" (par exemple, pour la touche flèche vers le haut, elle sera "ARROWUP" - (convertie en majuscules))