Как возобновить анимацию с последней позиции независимо от того, приостановил ли я ее на основной временной шкале или анимации ребенка / внука? - PullRequest
1 голос
/ 17 сентября 2011

Я нашел общий рекурсивный цикл, который останавливает / приостанавливает все дочерние мувиклипы. Если я изменяю stop для воспроизведения в коде, он воспроизводит все дочерние мувиклипы одновременно. Я хочу возобновить только одну анимацию за раз. Я хочу универсальный рекурсивный цикл, который возобновляет анимацию с последней позиции (позиции, в которой она была приостановлена), независимо от того, был ли я приостановлен на основной временной шкале, анимации в дочерних видеоклипах или анимациях в видеоклипах внуков. (У меня есть анимации на основной временной шкале, анимации в последнем фрейме MC основной временной шкалы и снова в последнем фрейме MC дочерней временной шкалы). Как я могу это сделать? Я новичок во флэш, поэтому, пожалуйста, простые объяснения / предложения. Спасибо.

btnStart.addEventListener(MouseEvent.CLICK, startMotion);

function startMotion(evt:MouseEvent):void {

    playAllChildMovieClips(stage);

}

function playAllChildMovieClips(displayObject:DisplayObjectContainer):void{

    var numChildren:int = displayObject.numChildren;

    for (var i:int = 0; i < numChildren; i++) {

        var child:DisplayObject = displayObject.getChildAt(i);

        if (child is DisplayObjectContainer) {
            if (child is MovieClip) {

                MovieClip(child).play();

                }
                playAllChildMovieClips(DisplayObjectContainer(child));
            }
        }

} Возможно, я не очень хорошо объясняю вещи. Итак, я перефразирую свой вопрос, и если вы хотите, вы можете скачать и просмотреть мои файлы. У меня есть родительский SWF, который имеет кнопку возобновления / воспроизведения. Родительский SWF загружает дочерний SWF. Child SWF имеет анимацию с голосом на нескольких уровнях. Когда я использую приведенный выше код, кнопка остановки останавливает анимацию на всех уровнях, но кнопка возобновления / воспроизведения возобновляется, а также перематывает анимацию и голос за кадром. Хотелось бы, чтобы кнопка возобновления анимации не возобновлялась с самого начала? Если я все еще не имею смысла, пожалуйста, смотрите файлы, представленные в ссылках: http://www.mediafire.com/?ks3ibqt9kcpx4, http://www.mediafire.com/file/8rncs0c8chy8a6i/clip4.swf, http://www.mediafire.com/file/ea1gm0za6l6kva0/clip4.fla. Спасибо

1 Ответ

0 голосов
/ 17 сентября 2011

Просто создайте новую функцию, которая останавливает мувиклипы.Разница между функциями заключается в том, что первая использует play (), а другая - stop ().Казалось, что ваша оригинальная функция работает таким образом.

playAllChildMovieClips(targetMovieclip); // using MovieClip(child).play();

stopAllChildMovieClips(targetMovieclip); // using MovieClip(child).stop();

btnStart.addEventListener(MouseEvent.CLICK, startMotion);
btnStop.addEventListener(MouseEvent.CLICK, stopMotion);

function startMotion(evt:MouseEvent) : void
{

    playAllChildMovieClips(stage);

}

function playAllChildMovieClips(displayObject:DisplayObjectContainer):void{

    var numChildren:int = displayObject.numChildren;

    for (var i:int = 0; i < numChildren; i++) {

        var child:DisplayObject = displayObject.getChildAt(i);

        if (child is DisplayObjectContainer) {
            if (child is MovieClip) {

                MovieClip(child).play();

                }
                playAllChildMovieClips(DisplayObjectContainer(child));
            }
        }
}



function startMotion(evt:MouseEvent) : void
{

    stopAllChildMovieClips(stage);

}

function stopAllChildMovieClips(displayObject:DisplayObjectContainer):void{

    var numChildren:int = displayObject.numChildren;

    for (var i:int = 0; i < numChildren; i++) {

        var child:DisplayObject = displayObject.getChildAt(i);

        if (child is DisplayObjectContainer) {
            if (child is MovieClip) {

                MovieClip(child).stop();

                }
                stopAllChildMovieClips(DisplayObjectContainer(child));
            }
        }
}
...