Tengo una función que se activa solo cuando presionamos la barra espaciadora o el evento isJumping ya está ocurriendo
Si pulsamos cualquier otra tecla, no pasa nada.
function onJump(e) { if (e.code !== "Space" || isJumping) return yVelocity = JUMP_SPEED isJumping = true }La pregunta es, ¿puedo agregar a esta función para que, además del espacio, también se active el evento de clic del mouse?
Es decir, si presionamos la barra espaciadora o hacemos clic con el mouse, entonces la función funciona
El evento de clic del mouse no es un código clave, por lo que estoy un poco confundido sobre cómo hacerlo bien
Si se llama a la función cuando presiona una tecla, eso se debe a que en algún lugar del código que no nos mostró , tiene algún código que registra esa función (u otra función que llama a la primera) como un controlador de eventos que se activa cuando una tecla se presiona (por ejemplo keyup o keypress ).
Si desea llamarlo cuando se hace clic en algo, también debe registrarlo como un controlador de eventos para ese tipo de evento (por ejemplo, click o mousedown ).
MDN tiene un tutorial sobre el manejo de eventos .
Supongo que onJump está adjunto a un controlador de eventos de teclado, presumiblemente en document , algo como esto:
document.addEventListener("keydown", onJump); Si es así, también puede adjuntarlo para click :
document.addEventListener("keydown", onJump); document.addEventListener("click", onJump); ... y luego modifique la función para que verifique qué type de evento obtuvo y lo maneje en consecuencia:
function onJump(e) { if (isJumping || (e.type === "keydown" && e.code !== "Space")) return; yVelocity = JUMP_SPEED; isJumping = true; } Eso solo verificará el e.code si el evento es el evento de keydown de tecla, no el evento de click . (Ajuste el nombre del evento según sea necesario).
USAR EVENTO.TIPO
Utilice la propiedad event.type cuando utilice un único controlador para varios eventos. En su caso, desea que la misma función maneje los eventos del teclado y el mouse. Vea y ejecute el fragmento de código a continuación para ver cómo funciona.
window.addEventListener("keydown", onJump); window.addEventListener("mousedown", onJump); const JUMP_SPEED = 100; let isJumping = false; function onJump(e) { if (e.type === "mousedown") { // add event handler here } else if (e.type === "keydown" && e.code === "Space" && !isJumping) { yVelocity = JUMP_SPEED isJumping = true } console.log("event: " + e.type + ", isJumping: " + isJumping + ", keycode: " + e.code); } <h3>Click the mouse or press spacebar</h3> <img src="https://cdn.icon-icons.com/icons2/567/PNG/512/packman_icon-icons.com_54382.png" style="height:100px;width:auto"/>