Анимация Flash AS2 продолжается в нечетной точке, если фильм загружается и выгружается быстро? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть флэш-файл с тремя основными кнопками сверху. При нажатии кнопки временная шкала перемещается к тому кадру (обозначенному меткой), который загружается в определенный внешний SWF-файл, соответствующий кнопке. Эти фильмы загружаются в тот же пустой мувиклип, который называется «презентация», используя:

loadMovie("splash.swf","presentation"); 

В одном из внешних загруженных SWF-файлов есть анимация анимации (в первом кадре с использованием TweenLite), которая происходит при загрузке SWF-файла. Проблема заключается в том, что когда я нажимаю кнопку и перехожу к другому кадру (который загружает другой SWF) в середине этой анимации, и возвращаюсь на ту же страницу с анимацией. Анимация начинается на полпути, как если бы она работала сзади, например, исчезновение в вещах, которые еще не должны исчезать, и т.д ..? Любая подсказка, почему?

РЕДАКТИРОВАТЬ: Может быть, это причина? Код анимации в первом кадре загруженного SWF:

//Animate the bouquet
var bFadeIn:Tween = new Tween(bouquet,"_alpha",Back.easeInOut,0,100,1,true); //106.95

bFadeIn.onMotionFinished = function() {
    for(var i=1; i < 12; i++) {
        TweenLite.to(bouquet["olddot"+i], 1, {_x:96.25, _y:94.05, _alpha: 0, ease:Back.easeInOut});
    }

    TweenLite.to(bouquet.chip, 1, {_alpha:0, delay:1, onComplete:newDotsAnimate}); 
}

function newDotsAnimate() {
    TweenLite.to(bouquet.phone,1, {_alpha:100, ease:Back.easeOut, delay:.3});
    bouquet.phone._visible = true;
    TweenLite.to(bouquet.newdot1, 1, {_alpha:100, _x:127.95, _y:23, ease:Back.easeOut, delay:1});
    TweenLite.to(bouquet.newdot2, 1, {_alpha:100, _x:226.45, _y:101.50, ease:Back.easeOut, delay:1});
    TweenLite.to(bouquet.newdot3, 1, {_alpha:100, _x:188.70, _y:216.60, ease:Back.easeOut, delay:1});
    TweenLite.to(bouquet.newdot4, 1, {_alpha:100, _x:59.95, _y:216.90, ease:Back.easeOut, delay:1});
    TweenLite.to(bouquet.newdot5, 1, {_alpha:100, _x:26.95, _y:100.95, ease:Back.easeOut, delay:1});

    TweenLite.to(bouquet_instructions,1,{_alpha:100}); //fade in the instructions, then fade them out
}

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Анимация начинается на полпути, как если бы она работала сзади?Любая подсказка о том, почему?

Ваш загруженный SWF остановится на месте, где вы его оставили.Возвращение к кадру, показывающему его, заставит его возобновить с того места, на котором он остановился, если вы не вызвали gotoAndStop (1).Это потому, что SWF не выгружается и не перезагружается каждый раз, когда вы перемещаетесь по временной шкале.

Лучше всего, если это возможно, создать метод cleanup () или hide () для загруженного SWF (s) вызывается всякий раз, когда основной SWF-файл удаляется от них.Таким образом, загруженный вами SWF-контент может отключиться (прекратить воспроизведение звуков, остановить воспроизведение на временной шкале и т. Д.).При реализации этой функции сами загруженные SWF-файлы берут на себя ответственность за свои условия «сброса», и все, что SWF-загрузчик должен сделать, это вызвать «loadedSWF.cleanup () ».

0 голосов
/ 02 февраля 2012

Возможно, потому что он все еще работает в фоновом режиме.как выглядит ваше игровое событие?Вы делаете "gotoAndPlay (1)" при загрузке?

, если вы хотите, чтобы этого не было, одним простым способом было бы подключить событие остановки к нажатию кнопки.Итак, вот так (прошло уже несколько лет с тех пор, как я использовал as2, так что потерпите меня здесь):

button2.onMouseUp(){
       loadedMovie.gotoAndStop(1);
}

еще более чистый способ - написать функцию, которая остановит все внешние фильмыпри переходе от одного к другому.

затем, когда вы вернетесь, ваше игровое событие должно начаться правильно.

...