【问题标题】:Flash AS3 | Finishing current animation set before code is executed闪存 AS3 |在执行代码之前完成当前动画集
【发布时间】:2015-08-30 15:53:41
【问题描述】:

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

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

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

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

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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: actionscript-3 flash animation


    【解决方案1】:

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

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

    addEventListener(Event.ENTER_FRAME, enterFrame);
    

    然后用这个检查:

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

    快速说明我正在使用我的 iPhone,因此无法检查这是否有效,尽管它可能有效。

    【讨论】:

    • 进行了一些编辑,非常感谢!按钮命令的最终代码就是这样出来的。非常感谢! import flash.events.MouseEvent; Next1.addEventListener(MouseEvent.CLICK, Walk); function Walk(event: MouseEvent): void { addEventListener(Event.ENTER_FRAME, enterFrame); function enterFrame(e:Event):void { if (currentFrame == 30) { gotoAndPlay(31); } } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    相关资源
    最近更新 更多