关于actionscript 3:Flash AS3 |在执行代码之前完成当前动画集

Flash AS3 | Finishing current animation set before code is executed

我正在尝试解决我在 Flash CC AS3 中遇到的关于按钮使用的问题。我会尽量让解释变得简单。

我目前有两组包含运动的帧:一组是慢走的人(第 1-30 帧),下一组是同一个人但走得更快(第 31-60 帧)。对于两组动画,开始帧和结束帧完全相同,因此如果过渡发生在当前查看动画的结束点,则可以启用无缝过渡。

这些集合通过简单地从它们的起始帧播放到结束帧来自行工作,在该帧中,AS 代码使它们停止,然后跳回原始起始点并重复,无限循环。我有一个按钮,当按下它时,它会跳转到下一个动画的起点,现在正在播放新动画。 EG 那个人正在走路,我按下按钮,现在这个人走得更快了。

问题是,当我按下按钮时,动画会立即从您当前所在的任何帧变为新的起点,这会产生一种"剪切"效果,由于跳过的帧而看起来很糟糕。我怎样才能做到这一点,以便在按下按钮时,剩余的帧在跳转到新动画之前完成播放?
IE 男子在第 17 帧处于中间行走状态,用户按下按钮。动画播放到第 30 帧,然后跳到播放新循环的第 31 帧。

我尝试过使用 if 语句,但找不到合适的命令来解决这个问题。任何帮助将不胜感激

TL;DR 解决后,动画应如下执行:第 1-30 帧以无缝循环播放。当我按下一个按钮时,动画将继续播放到第 30 帧,然后它将开始循环播放第 31-60 帧。

任何帮助将不胜感激!


对此的回答很好且简单:) 您可以使用事件侦听器来检查单击按钮后当前帧是否为第 30 帧。您可以使用 if 语句进行此检查。

当按钮被点击时添加这个监听器:

1
addEventListener(Event.ENTER_FRAME, enterFrame);

然后用这个检查:

1
2
3
4
5
function enterFrame(e:Event):void {
    if (someAnimation.currentFrame == 30) {
        //do this
    }
}

一个简短的说明,我在我的 iPhone 上,所以无法检查这是否有效,尽管它可能有效。