用于movieclip结束的flash事件监听器?

Dan*_*cer 9 flash actionscript-3 flash-cs5

有人建议在动画片段动画结束时触发功能的最佳方法吗?我认为eventlistener可以处理这个问题,但不确定最好的方法.谢谢保罗

Mar*_*rty 10

有几种方法可以解决这个问题:

  1. 只需从动画的最后一帧调用该函数即可.
  2. 在函数的最后一帧发送一个事件,并在其他地方监听它.
  3. 长而有效/整洁/推荐的方式.

在参考第3点时,我将为您的对象创建一个基类.这样,您可以将相同的逻辑应用于动画的多个元素.

像这样的东西:

package
{
    import flash.display.MovieClip;
    import flash.events.Event;

    public class AnimatingObject extends MovieClip
    {
        // constants
        public const ANIMATION_COMPLETE:String = "animation_complete";

        /**
         * Constructor
         */
        public function AnimatingObject()
        {
            addEventListener(Event.ENTER_FRAME, _handle);
        }

        /**
         * Called on dispatch of Event.ENTER_FRAME
         */
        private function _handle(e:Event):void
        {
            if(currentFrame == totalFrames)
            {
                var evt:Event = new Event(ANIMATION_COMPLETE);
                dispatchEvent(evt);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以听"animation_complete"并相应地做一些事情.

package
{
    import flash.events.Event;

    public class MyAnimatingObject extends AnimatingObject
    {
        /**
         * Constructor
         */
        public function MyAnimatingObject()
        {
            addEventListener(ANIMATION_COMPLETE, _lastFrame);
        }

        /**
         * Called on dispatch of AnimatingObject.ANIMATION_COMPLETE
         */
        private function _lastFrame(e:Event):void
        {
            trace("i'm done");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Cur*_*raw 0

我不相信在影片剪辑的末尾有一个事件广播,您始终可以在动画的最后一帧上运行脚本来执行您想要的操作。如果您确实想使用事件,则影片剪辑的最后一帧可以执行一个脚本,该脚本利用dispatchEvent() 发送一个可以拾取的自定义事件。

从您的帖子中我不确定您以前是否使用过事件处理程序,所以这里有一个关于该事件处理程序的教程(我不擅长解释,抱歉!):http: //edutechwiki.unige.ch/en/ActionScript_3_event_handling_tutorial

对于dispatchEvent(): http://www.actionscript.org/resources/articles/204/1/Using-EventDispatcher/Page1.html