Flash AS3 |在执行代码之前完成当前动画集

时间:2015-08-30 15:53:41

标签: actionscript-3 flash animation

我正在尝试解决Flash CC AS3中有关按钮使用的问题。我会尝试尽可能地解释这一点。

我目前有两组有动作的帧:一个是慢慢走路的人(第1-30帧),另一个是同一个人,但步行得快得多(第31-60帧)。对于两组动画,开始帧和结束帧完全相同,因此如果转换发生在当前查看的动画的结束点,则可以启用无缝转换。

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

问题是当我按下按钮时,动画会立即从您当前所在的帧变为新的起始点,这会产生“切割”效果,因为它看起来很糟糕跳过的帧。我怎么能够这样做,以便当按下按钮时,剩余的帧在跳转到新动画之前完成播放? IE这名男子在第17帧走路,用户按下按钮。动画播放到第30帧,然后跳过播放新循环的第31帧。

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

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

这个很好很简单的答案:)你可以使用一个事件监听器来检查一旦点击按钮当前帧是否是第30帧。您可以使用if语句进行此检查。

单击该按钮时,添加此侦听器:

addEventListener(Event.ENTER_FRAME, enterFrame);

然后使用以下方法检查:

function enterFrame(e:Event):void {
    if (someAnimation.currentFrame == 30) {
        //do this
    }
}

快速说明我在iPhone上,所以无法检查这是否有效,尽管很可能。