Flash - остановить зацикливание анимации

У меня есть Flash-баннер, на котором мне нужно анимировать некоторые элементы, когда вы переворачиваете их родительский элемент, затем останавливаетесь, а затем запускаете другую анимацию при развертывании. Это работает нормально, пока пользователь ведет себя прилично, но если вы покачиваете мышью, так что происходит несколько быстрых последовательных ролловеров / развертываний, анимация превращается в бесконечный цикл. Кто-нибудь еще сталкивался с этой проблемой?

Мой сценарий действий:

on (rollOver) {
    //frames 2 - 10 are the "turn on" animation
    this.gotoAndPlay(2);
    //frames 11 - 25 are house_three's "turn on" animation
    _root.house_three.gotoAndPlay(11);
}
on (rollOut) {
    //frames 11 - end are the "turn off" animation
    this.gotoAndPlay(11);
    //frames 26 - end are house_three's "turn off" animation
    _root.house_three.gotoAndPlay(26);
}

house_three (в данном случае) имеет stop();s на кадрах 10, 25 и последнем кадре, а текущий объект имеет stop();s на кадрах 1, 10 и последнем, поэтому он ни в коем случае не должен проходить мимо них.

Я подумал, что это может быть связано со многими экземплярами анимации, помещенными в очередь, но это заставит анимацию запускаться несколько раз, а затем останавливаться (верно?), Но, похоже, она работает бесконечно.


person Heroes182    schedule 09.05.2012    source источник


Ответы (1)


Попробуйте установить тест внутри вашего rollOver и rollOut, чтобы увидеть, воспроизводится ли баннер в данный момент. Если это так, остановите это, а затем играйте.

if(this.isPlaying)
{
    this.stop();
    this.gotoAndPlay(2)
}
person Dom    schedule 09.05.2012
comment
Я разобрался в проблеме. Чтобы минимизировать размер файла, я использовал паузу в ActionScript, затем функции воспроизведения внутри моих объектов фильма, и именно эти паузы ставились в очередь бесконечно. Как только я удалил их и просто дублировал идентичные кадры на несколько секунд, все заработало. Однако спасибо за вашу помощь, я думаю, что это решение, вероятно, тоже помогло бы (не могу проверить, избавился от плохого кода, как только нашел решение). - person Heroes182; 10.05.2012