Oneshot Gems
Jugar ahora

Para desarrolladores de juegos

Borrar el estado de entrada cuando se omite una liberación de tecla

Un juego que registra las teclas mantenidas suele activar una marca al pulsar una tecla y desactivarla al soltarla. Si el jugador cambia de pestaña mientras mantiene pulsada una dirección, el juego puede no recibir el evento de liberación y seguir moviéndose cuando vuelve el foco. Es un error del ciclo de vida, distinto de elegir buenas asignaciones de teclas. Haz explícito el conjunto de teclas mantenidas, vacíalo en puntos de interrupción definidos y prueba cada situación que pueda interrumpir una pulsación antes de dar el problema por resuelto.

En esta página

Seguimiento de las prensas como estado, no como eventos de movimiento repetidos

En keydown, añada la tecla correspondiente a un conjunto; durante cada actualización, consulte ese conjunto para decidir el movimiento. En keyup, elimine la tecla. Esto evita tratar los eventos de repetición de claves del sistema operativo como el reloj de movimiento del juego. También ignore una segunda pulsación de tecla para una tecla que ya está presionada cuando la acción debería comenzar solo una vez, como disparar un solo tiro cargado. MDN describe que mantener presionada una tecla puede producir eventos repetidos de pulsación de tecla, y KeyboardEvent.repeat puede identificar esos eventos repetidos en los navegadores compatibles.

Elige qué teclas cuentan como controles del juego y deja los campos de texto en paz. Si un campo de entrada de nombre o mensaje tiene el foco, los controladores de movimiento no deben consumir los mismos caracteres. Evite los valores predeterminados del navegador, como el desplazamiento de páginas, solo para los controles que realmente necesitan ese comportamiento y restaure el comportamiento normal de la página cuando el jugador sale del área de juego.

Borrar el conjunto en caso de interrupción y cambio de estado.

Borre la entrada retenida cuando la ventana se vuelve borrosa, el documento se oculta, una superposición de pausa toma el control o la ejecución se reinicia. Un controlador de cambios de visibilidad puede verificar document.hidden y borrar el conjunto cuando se convierta en verdadero. No borre a ciegas cada cuadro o movimiento del puntero; vincular la limpieza a una interrupción en la que es posible que no llegue una llave. Haga que el juego requiera una nueva pulsación de tecla después de la reanudación en lugar de reanudar automáticamente el movimiento anterior.

Reproducir las rutas de interrupción.

Mantenga pulsada la tecla de dirección izquierda y cambie de pestaña, mantenga presionado el salto y abra un menú, y presione una dirección mientras se reinicia. Al volver al juego, verifica que el personaje permanezca quieto hasta que se vuelva a presionar intencionalmente. Repita con dos teclas simultáneas, como derecha más salto, y asegúrese de que al borrar una tecla no se deja la otra bloqueada. Incluya cambios de enfoque del teclado entre los controles del juego y la entrada de texto.

Preguntas sobre ⁨evitar teclas atascadas en juegos de navegador⁩

¿Por qué una tecla puede quedarse pulsada después de soltarla?

Es posible que el juego no reciba ni procese el evento keyup correspondiente cuando el enfoque cambia o una superposición toma el control. Restablecer el estado retenido en esas rutas de interrupción permite que el jugador reanude la partida sin entradas atascadas.

¿La repetición de teclas debería controlar el movimiento del personaje?

Para un movimiento continuo, realiza un seguimiento del estado retenido y actualiza el movimiento en el bucle del juego. La repetición es más útil para distinguir los eventos repetidos de pulsación de tecla de la pulsación inicial cuando una acción debería ocurrir una vez.

Más información

¿Has visto algo desactualizado? Notificar una corrección

Sigue jugando.

Juegos de navegador gratis, listos cuando tú quieras. Encuentra uno que te guste y conviértelo en tu nuevo favorito.

Sigue tu curiosidad