Бесконечный цикл между 2 анимациями анимации в Flex - PullRequest
1 голос
/ 27 мая 2011

Я пытаюсь переключаться между двумя различными действиями анимации во Flex. Вот что я сейчас пытаюсь:

В декларациях:

<fx:Declarations>
    <s:Animate id="goRight"
        duration="3000" target="{nShape}" >
        <s:SimpleMotionPath property="x" valueFrom="0" valueTo="400" />
    </s:Animate>
</fx:Declarations>

Запуск анимации:

var animate:Boolean = true;
var isLeft:Boolean = true;

while (animate)
{
    if (isLeft) 
    {
        goRight.play(null);
        while (goRight.isPlaying){};
    }
    else {
        goRight.play(null, true); // play it backwards
        while (goRight.isPlaying){};
    }

    isLeft = !isLeft;
}

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

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

... У вас есть 3 цикла while, который никогда не прерывается ....

Flash не является многопоточным (пока) и это язык, основанный на событиях.Как насчет того, чтобы использовать события, чтобы проверить ход или показатель после завершения анимации (которая должна отправлять завершенное событие).

Это не Java.Это визуальный, потоковый, асинхронный, основанный на кадрах язык.

2 голосов
/ 27 мая 2011

Проблема здесь:

while (goRight.isPlaying){};

Как только вы вызовете goRight.play(null);, оператор while, приведенный выше, будет просто зацикливаться бесконечно, потому что goRight.isPlaying имеет значение true.

Если вы хотите доказать это, добавьте в цикл while следующее:

trace("I'm playing");

Вам нужно избавиться от циклов while и использовать другую конструкцию; возможно обработчики событий? Я не уверен в том, что лучше всего делать сейчас ... Прошло много времени с тех пор, как я работал с подростками, но я знаю, что в те дни были события, к которым можно было подключиться, когда анимация анимации заканчивается.

...