Es mejor controlar el teclado de esta otra manera:
http://jsfiddle.net/marlanga/kyoody4p/
Código Javascript
:
Ver originalvar Teclado = {
CURSOR_ARRIBA : false,
CURSOR_ABAJO : false,
CURSOR_DERECHA : false,
CURSOR_IZQUIERDA : false,
ESPACIO : false,
establecer : function ( keyCode, booleano ) {
switch( keyCode ) {
case 32:
Teclado.ESPACIO = booleano;
break;
case 37:
Teclado.CURSOR_IZQUIERDA = booleano;
break;
case 38:
Teclado.CURSOR_ARRIBA = booleano;
break;
case 39:
Teclado.CURSOR_DERECHA = booleano;
break;
case 40:
Teclado.CURSOR_ABAJO = booleano;
break;
}
},
cargar : function( element ) {
element.onkeydown = function (e){
Teclado.establecer( e.keyCode, true );
};
element.onkeyup = function (e){
Teclado.establecer( e.keyCode, false );
};
}
};
Teclado.cargar(document.body);
A ésto se le conoce como sistema de "notificaciones". Yo guardo en un objeto Teclado que una tecla concreta está pulsada. El resto del código puede mirar ese objeto para comprobar si en esa vuelta del "bucle" se está pulsando una tecla dada. Esto, junto al tiempo "delta" es la base de todo videojuego simple.
En mi firma hay un enlace a un viejo blog mío donde hacía (y quiero retomar algún día) tutoriales de pequeños videojuegos, y en varios de ellos se puede ver cómo hago uso del teclado.