Estoy desarrollando un prototipo de juego utilizando el framework Phaser con JavaScript. Por lo tanto, estoy tratando de ejecutar una función retrasada con una variable condicional var isPlaying == true en el método update() , pero no funciona. La función funciona, pero no con el tiempo de retardo definido. Se ejecuta rápidamente y probablemente a FPS (deltaTime).
update(){ if(isPlaying){ this.time.addEvent({delay: 2500, callback: createItem, callbackScope: this, loop: true}); } }La función de update se activa en FPS, por lo que está agregando un nuevo evento en cada cuadro. Cada evento que agrega es con loop: true , por lo que llamará a la función de devolución de llamada cada 2500.
Dependiendo de lo que desee lograr, es posible que desee colocar addEvent al final de la función de create en lugar de update y luego reanudarlo solo una vez en la actualización.
var timer; create() { timer = this.time.addEvent({delay: 2500, callback: createItem, callbackScope: this, loop: true, paused: true}); } update(){ if(isPlaying && timer.paused){ timer.paused = false; } }Puede encontrar otra nota sobre los temporizadoresaquí