Estoy haciendo un juego en JS y soy bastante nuevo en todo esto. He creado un ciclo principal dentro de un setInterval, así:
int = setInterval(() => { Do game stuff, keyboard input, update sprite positions, etc... Update the screen },FPS_interval);Pero quiero que esta función pueda pasar el control a otra función que también está en setInterval. Entonces, cuando paso, quiero detener el activador de intervalo en esta función principal y llamar a la otra función en un setInterval. Cuando esa función haya terminado, quiero volver a esta función, nuevamente en un setInterval. Estoy intentando cosas como esta:
int = setInterval(() => { Do game stuff, keyboard input, update sprite positions, etc... If you die, go to game over screen gameOver(); Update the screen },FPS_interval); function gameOver(){ clearInterval(int); int = setInterval(() => { Do game over stuff when done, return to main loop. }, FPS_interval); }Un problema que tengo es cuando el ciclo principal llama a la función gameOver, aunque la función gameOver borra el intervalo, el ciclo principal continúa ejecutándose hasta el final.
Otra forma de ver esto es que solo quiero poder pasar entre funciones, algunas de ellas con bucles separados, y mantener la pantalla actualizándose a intervalos regulares.
¿Hay una forma más limpia? ¡Estoy seguro de que debe haberlo!
Probablemente esté buscando una variable de semáforo. Intente declarar uno y una vez que ingrese al juego, configure ese semáforo y en el set_interval principal ejecute las instrucciones después de la llamada del juego solo si el semáforo no está configurado.