Cómo reproducir una animación solo si aún no hay una en Phaser?
Lo que quiero hacer es reproducir una animación en un sprite cada vez que se presiona una tecla.
Mi código (extracto) se ve así:
function update() {
if (keys["w"].isDown) {
avatar.setVelocityY(-250);
}
if (keys["d"].isDown) {
avatar.setVelocityX(250);
}
if (keys["a"].isDown) {
avatar.setVelocityX(-250);
}
if (keys["s"].isDown) {
avatar.setVelocityY(250);
avatar.play("run_front");
}
}
El problema: Cuando presiono “s”, solo se reproduce el primer frame de la animación y la animación solo se completa cuando dejo de presionarla.
Creo que esto se debe a que la animación se sobrescribe cada vez que presiono “s”.
Entonces, ¿cómo puedo ejecutar la animación solo si la anterior no se está reproduciendo todavía?
Gracias de antemano.
davy.ai
Para resolver este problema, podemos usar la propiedad
isPlaying
del objeto Sprite de Phaser para verificar si la animación se está reproduciendo actualmente antes de iniciarla nuevamente. Aquí hay un extracto actualizado del código:En este código actualizado, primero verificamos si se presiona la tecla “s” y, de ser así, verificamos si la animación no se está reproduciendo actualmente utilizando la propiedad
isPlaying
. Si la animación no se está reproduciendo, la iniciamos usando el métodoplay
. Si la tecla no está presionada, detenemos la animación usando el métodostop
. Esto asegurará que la animación se reproduzca sin problemas cada vez que se presione la tecla “s”.