event delete javascript keyboard key keylistener

delete - Keylistener en Javascript



js shortcut (5)

Estoy buscando un KeyListener para un juego que estoy desarrollando en JavaScript. No tengo idea de cómo funcionaría esto en código real, pero sería algo como esto:

if(keyPress == upKey) { playerSpriteX += 10; } else if(keyPress == downKey) { playerSpriteY -= 10; }

etc ...

Lo busqué, y a Google se le ocurrieron cosas que involucraban a AJAX que aún no entiendo. ¿Hay una función incorporada en JavaScript que hace esto?


¿Revisaste la pequeña biblioteca de Mousetrap ?

Mousetrap es una biblioteca simple para manejar atajos de teclado en JavaScript.


El codigo es

document.addEventListener(''keydown'', function(event){ alert(event.keyCode); } );

Esto devuelve el código ASCII de la clave. Si necesita la representación clave, use event.key (Esto devolverá ''a'', ''o'', ''Alt'' ...)


Una comparación un poco más legible se realiza mediante la conversión de event.key a mayúsculas (utilicé onkeyup - necesitaba que el evento se event.key que se event.key cada tecla):

window.onkeyup = function(event) { let key = event.key.toUpperCase(); if ( key == ''W'' ) { // ''W'' key is pressed } else if ( key == ''D'' ) { // ''D'' key is pressed } }

Cada clave tiene su propio código, elimínelo al generar el valor de la variable "clave" (por ejemplo, para la tecla de flecha arriba será ''ARROWUP'' - (convertido en mayúsculas))


DEMO DE JSFIDDLE

Si no desea que el evento sea continuo (si desea que el usuario tenga que liberar la tecla cada vez), cambie onkeydown a 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''); } };


window.onkeyup = function(e) { var key = e.keyCode ? e.keyCode : e.which; if (key == 38) { playerSpriteX += 10; }else if (key == 40) { playerSpriteX -= 10; } }

FIDDLE