Почему моя анимация не ждет, пока не появится список событий? - PullRequest
0 голосов
/ 24 февраля 2012
    var playGraph = new Chart();
var playPart1 = new Part1();
var playPart2 = new Part2();
var playPart3 = new Part3(); 

addChild(playGraph);
playGraph.gotoAndPlay(1);
var s1:SoundOne = new SoundOne();
s1.play();

playGraph.addEventListener(Event.COMPLETE, onCompleteGraph); 
playPart1.addEventListener(Event.COMPLETE, onCompletePart1); 
playPart2.addEventListener(Event.COMPLETE, onCompletePart2); 

function onCompleteGraph(evt:Event):void
{
    playPart1.x = 370;
    playPart1.y = 190;
    addChild(playPart1);
    playPart1.gotoAndPlay(1);
}


function onCompletePart1(evt:Event):void
{

    playPart2.x = 100;
    playPart2.y = 100;
    addChild(playPart2);
    playPart2.gotoAndPlay(1);
    var s2:Sound2 = new Sound2();
    s2.play();

}

function onCompletePart2(evt:Event):void
{
    removeChild(playPart2);
    addChild(playPart3);
    playPart3.gotoAndPlay(1);
    var s3:Sound3 = new Sound3();
    s3.play();

}

Мой вопрос: я не хочу удалять ребенка (playPart1) ;.Я хочу, чтобы ребенок остался.Однако - если я не удаляю это, все играет просто отлично.Если я удаляю его, кажется, что он игнорирует тот факт, что он должен закончить playGraph, прежде чем перейти на playPart1.Есть идеи, почему это будет?

1 Ответ

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

Я предполагаю, что Chart / Part1 / Part2 являются символами MovieClip, которые отправляют событие COMPLETE, когда они достигают последнего кадра?Если это правильно, тогда я могу сделать довольно разумное предположение о том, что происходит.

Вы предполагаете, что ваши символы не будут воспроизводиться, пока вы не добавите их на сцену и не вызовете gotoAndPlay ,Это неверно, как только вы создадите экземпляр символа, он начнет воспроизводиться в фоновом режиме, то есть первые 4 строки кода создадут символ и начнут его воспроизводить, даже если они не видны на экране, как таковые., ваши события COMPLETE будут срабатывать в фоновом режиме, прежде чем вы ожидаете.

Решение состоит в том, чтобы остановить воспроизведение этих символов, как только вы их создадите, а затем начать воспроизведение после того, как сработало предыдущее событие COMPLETE.

var playGraph = new Chart();
var playPart1 = new Part1();
var playPart2 = new Part2();
var playPart3 = new Part3(); 

//Stop the symbols from playing automatically
playPart1.stop();
playPart2.stop();
playPart3.stop();

addChild(playGraph);
playGraph.gotoAndPlay(1);
var s1:SoundOne = new SoundOne();
s1.play();

playGraph.addEventListener(Event.COMPLETE, onCompleteGraph); 
playPart1.addEventListener(Event.COMPLETE, onCompletePart1); 
playPart2.addEventListener(Event.COMPLETE, onCompletePart2); 

function onCompleteGraph(evt:Event):void
{
    playPart1.x = 370;
    playPart1.y = 190;
    addChild(playPart1);
    playPart1.gotoAndPlay(1);
}


function onCompletePart1(evt:Event):void
{

    playPart2.x = 100;
    playPart2.y = 100;
    addChild(playPart2);
    playPart2.gotoAndPlay(1);
    var s2:Sound2 = new Sound2();
    s2.play();

}

function onCompletePart2(evt:Event):void
{
    removeChild(playPart2);
    addChild(playPart3);
    playPart3.gotoAndPlay(1);
    var s3:Sound3 = new Sound3();
    s3.play();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...