¿Se borran todos los setIntervals en el cambio de escena en Phaser 3? Por ejemplo, si tengo este código:
class ExampleScene extends Phaser.Scene { constructor () { super(); } preload () { } create () { setInterval(() => console.log(true), 1000); } update () { } } y cambio de escena, ¿seguirá registrando true a la consola? ¿Existe alguna alternativa en Phaser que no requiera que elimine todos los intervalos manualmente?
La respuesta corta es, no . Dado que setInterval es una función de javascript.
Para detalles sobre la función: aquí en la documentación en mdn
Lo que puede hacer es "guardar" las llamadas/id de setInvertal en una lista y borrarlas en un evento de scene específico como, apagar , pausar , destruir ... Cuando se activa ese evento, puede detener todos los intervalos guardados, más o menos ( detalles de posibles eventos de escena ).
Esto también se considera una buena práctica , ya que siempre debe limpiar los recursos al salir de una escena de Phaser.
Ejemplo (aquí con el evento de apagado) :
... // setup list for the intervals, that should be cleared later constructor () { super(); this.intervals = []; } create () { ... // example of adding an interval, so that I can be cleanup later this.intervals.push(setInterval(() => console.log(true), 1000)); ... // example listening to the shutdown Event this.events.on('shutdown', this.stopAllIntervals, this); } ... // example "cleanup"-function, that is execute on the 'shutdown' Event stopAllIntervals(){ for(let interval of this.intervals){ clearInterval(interval); } } ... Y ahora solo tiene que llamar a stopAllIntervals en la función de evento deseada, cuando quiera detenerlos a todos.
De la documentación oficial, en el evento de apagado: ... Debe liberar cualquier recurso que pueda estar en uso por su Escena en este controlador de eventos, en el entendimiento de que la Escena puede, en cualquier momento, volver a activarse. Una escena de apagado no se 'destruye', simplemente no está activa en ese momento. Usa el evento DESTRUIR para borrar completamente los recursos. ...