Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как отслеживать завершение анимации (http://www.flasher.ru/forum/showthread.php?t=170045)

Vansimar 17.10.2011 16:05

Как отслеживать завершение анимации
 
Вот например есть код mc.gotoAndStop(3); и по завершению этой анимации нужно выполнить другие действия, как мне проверять закончилась анимация или нет?

Inet_PC 17.10.2011 16:08

addFrameScript или dispatchEvent, ну на худой конец ENTER_FRAME (или EXIT_FRAME).

Vansimar 17.10.2011 16:18

ну допустим взять addFrameScript , и как написать что то типо :пока выполняется анимация дальше действия не выполнять?

Inet_PC 17.10.2011 16:21

А почитать про addFrameScript не судьба?

Vansimar 17.10.2011 16:21

почитал но не понял

Inet_PC 17.10.2011 16:25

В addFrameScript передается номер кадра и callBack функция, которая запустится когда будет проигрываться этот кадр.
Покажите код.

Vansimar 17.10.2011 16:28

ды в том и дело что его пока нет,я не знаю что писать, у меня просто персонаж стреляет по нажатию на кнопку,воспроизводится анимация,если быстро тыкать на кнопку то анимация прекращает воспроизводится и обрывается и заново запускается,а мне нужно чтоб пока не доиграла анимация следущая не запускалась

Inet_PC 17.10.2011 16:32

Заводите себе флажок, например:
Код AS3:

private var isPlaying: Boolean = false;

Перед запуском анимации (в обработчика щелчка по кнопке) проверяете, установлен ли флажок, и если нет, то устанавливаете его и запускаете анимацию, с помощью addFrameScript ждете окончания его и сбрасываете флажок. Все.

Vansimar 17.10.2011 16:33

аа)все спасибо)

Добавлено через 9 минут
А можно сделать так? например создаем переменную,в нее заносим значение единицы, при выстреле она обнуляется, и по таймеру она восстанавливается типа load+=0.05; и все это на проверку,типа если переменная load больше или равна единицы тогда можно стрелять?

goodguy 17.10.2011 19:15

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

П.с. для удобства можно даже сделать общий интерфейс для всех персонажей (конечно же применить его во всех классах персонажей =) )
Код AS3:

public interface IUpdatable {
    function update():void;
}

в который прописать метод update() и поместить всех персонажей в вектор, например так:
Код AS3:

var charachters:Vector.<IUpdatable> = new Vector.<IUpdatable>();

и перебирать уже так:
Код AS3:

for (var i:String in characters) {
    characters[i].update();
}



Часовой пояс GMT +4, время: 22:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.