停止影片剪辑

时间:2011-06-14 04:01:49

标签: flash movieclip

我想要停止一部电影,当它进入最后一帧时,我按照以下方式做了这个:

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

    public class MeiYi extends Sprite{
        private var mainMovie:MovieClip = new MeiYiMain();  //MeiYiMain is build in the library of flash cs4

        function MeiYi():void{
            //stop at last frame
            mainMovie.addEventListener(Event.ENTER_FRAME, stopMainMovie);
            //trace(mainMovie.totalFrames);
            //mainMovie.gotoAndStop(50);
        }

        private function stopMainMovie(evt:Event):void{
            //trace(mainMovie.currentFrame);
            if (mainMovie.currentFrame == mainMovie.totalFrames){
                mainMovie.stop();  //stop
            }
        }
    }
}

但这对我没有任何意义,没有错误或我想要的东西。 它出什么问题了? 谢谢。

2 个答案:

答案 0 :(得分:2)

一个简单的解决方案就是:

stop();

在MovieClip的最后一帧(MeiYiMain)。您可以通过选择它并按 F9 来调出ActionScript面板。

另请参阅live docs for class MovieClip中的totalframes媒体资源:

  

中的总帧数   MovieClip实例。

     

如果影片剪辑包含多个   frames,totalFrames属性   返回的总帧数   影片剪辑中的所有场景。

这可能会在以后影响它。

答案 1 :(得分:0)

应该工作正常,这很奇怪。尝试为MeiYiMain创建一个类,并在其中添加侦听器,而不是在MeiYi内。

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

    public class MeiYiMain extends MovieClip
    {
        /**
         * Constructor
         */
        public function MeiYiMain()
        {
            addEventListener(Event.ENTER_FRAME, _handle);
        }

        /**
         * Handle
         * @param e Event.ENTER_FRAME
         */
        private function _handle(e:Event):void
        {
            if(currentFrame == totalFrames)
            {
                removeEventListener(Event.ENTER_FRAME, _handle);

                trace('stopped');
                stop();
            }
        }
    }
}