Al presionar la barra espaciadora en el juego se disparará un personaje, presionar la barra espaciadora cuando se muestre un cuadro de confirmación hará que esta casilla desaparezca y al presionar la barra espaciadora en un formato de puntuación más alta se agregará un espacio en un cuadro de entrada. En este ejemplo, hay varios eventos para la misma clave, pero solo uno se dispara a la vez.¿Cuál es la mejor manera de manejar múltiples eventos clave en Javascript?
¿Existe un método general (o específico para Javascript) o una forma de programación para agregar eventos a una determinada clave, por lo que solo se ejecutan bajo ciertas circunstancias?
Por supuesto que se puede hacer así:
var inGame = true|false;
var inConfirmationBox = true|false;
function spaceBarHandler(){
if(inGame){ /*shoot*/}
else if(inConfirmationBox){ /*remove box*/}
}
document.onkeydown = function(){ /* call space bar handler if space bar was pressed */ };
Pero esta es una manera muy confusa de programación, ya que las acciones específicas se mezclan entre sí en una función de gestión de la barra de espacio, lo que hace que el mantenimiento dura.
¿Cuál es la mejor manera de manejar eventos múltiples para una clave, de manera que estos eventos solo se disparen bajo ciertas circunstancias?
Creo que esta es la mejor respuesta, ¡gracias! La idea es genial y definitivamente la usaré; también agregaré un método 'addState (name, fn)', que hace que este objeto se complete. Gracias:] – Harmen
Pero aún está lejos de "la mejor manera" de manejar este problema. ¡Una pila administrada de controladores es mucho más conveniente! Como esta pregunta está bastante desactualizada, si alguien está interesado, podría desarrollarme. – Pierre