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

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

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
            }
        }
    }
}

но это ничего не сделало для меня, никаких ошибок или того, что я хочу. Что с этим не так? Спасибо.


person hon    schedule 14.06.2011    source источник


Ответы (2)


Простое решение - просто поставить:

stop();

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

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

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

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

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

person Shannon    schedule 14.06.2011
comment
о, извините, я пропустил информацию: я вытащил фильм MeiYiMan на сцену. - person hon; 14.06.2011
comment
О, я знаю. Я работаю с другим экземпляром MeiYiMain. - person hon; 14.06.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();
            }
        }
    }
}
person Marty    schedule 14.06.2011
comment
Не беспокойтесь, возможно, вам придется использовать кнопку принять ответ для ответа @Shannon. - person Marty; 14.06.2011