只有在 Phaser 中还没有动画的情况下,如何播放动画?

Posted

技术标签:

【中文标题】只有在 Phaser 中还没有动画的情况下,如何播放动画?【英文标题】:How to play an animation only if there isn't one yet in Phaser? 【发布时间】:2022-01-15 16:24:50 【问题描述】:

我想要做的是在精灵上播放一个正在运行的动画,每次按下一个键

我的代码(摘录)如下所示:


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");
  

问题:当我点击s时,只播放动画的第一帧,并且只有当我停止按下时动画才会结束。

我认为这是因为每次按s 都会覆盖动画。

那么,只有在之前的动画还没有播放的情况下,我如何才能运行动画呢?

提前致谢

【问题讨论】:

keys["s"] 是别名 BTW 【参考方案1】:

我找到了使用avatar.anims.isPlaying的解决方案

所以我做的是:

    if (!avatar.anims.isPlaying) avatar.anims.play("lazy");


【讨论】:

以上是关于只有在 Phaser 中还没有动画的情况下,如何播放动画?的主要内容,如果未能解决你的问题,请参考以下文章

从零到一:用Phaser.js写意地开发小游戏(Chapter 2 - 搭建游戏的骨架)

从零到一:用Phaser.js写意地开发小游戏(Chapter 2 - 搭建游戏的骨架)

Phaser 3 动画顺序/优先级

如何区分ios中的动画和单个精灵表?

如何在没有动画的情况下执行 unwind segue?

教你如何实现 Android TextView 文字轮播效果