остановить клип - PullRequest
       7

остановить клип

0 голосов
/ 14 июня 2011

Я хочу остановить фильм, когда он входит в последний кадр, я сделал это, как показано ниже:

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 ]

2 голосов
/ 14 июня 2011

Простым решением является просто:

stop();

В последнем кадре мувиклипа (MeiYiMain).Вы можете сделать это, выбрав его и нажав F9 , чтобы открыть панель ActionScript.

Также см. Свойство totalframes в живых документах для класса MovieClip :

Общее количество кадров в экземпляре MovieClip.

Если фрагмент ролика содержит несколько кадров, свойство totalFrames возвращает общее количество кадров во всех сценах фрагмента ролика.

Это может повлиять и на него позже.

0 голосов
/ 14 июня 2011

Должно работать нормально, что странно. Попробуйте создать класс для 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();
            }
        }
    }
}
...