![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2006
Сообщений: 6
|
Задумал сделать мини-игру на Flash, почитал пару книг, статей. Понял, что асинхронность некоторых действий происходит на автоматике, например метод “play()”, и организовать синхронность в таких методах (когда это необходимо) в виде замков (как например в C) нельзя, потому что замков как таковых просто нет.
А теперь собственно ситуация: Имеется xml-документ, в нем храниться лог боя, а именно действия: номер действия, имя атакующего, защищающегося и нанесенный урон: <BATTLE> … <ACTION act=”1” atk=”n1” dfn=”n2” dmg=”15”/> <ACTION act=”2” atk=”n1” dfn=”n2” dmg=”10”/> … <ACTION act=”10” atk=”n2” dfn=”n1” dmg=”20”/> </BATTLE> Вопрос собственно такой, как мне дождаться полного проигрывания первого действия, и только потом перейти ко второму, а потом к третьему и т.д.? |
|
|||||
|
4AM Games
|
Почитайте статью Евгения Потапенко о механизме конвеера, в его случае это класс на ActionScript 2.0
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
ага... нужно на AS3 переписать.
|
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Как вариант, отказаться от play вообще, и по EnterFrame самостоятельно перемещать все объекты (если на нужный кадр, то gotoAndStop).
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Тебя подождать или самим переписать? ![]() |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 6
|
Цитата:
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 6
|
Цитата:
Допустим есть у меня мувиклип бойца. С 1 по 10 кадр - анимация удара. Главное не забывать, что мне нужно как-то получить знак от мувиклипа, что он прошел с 1 по 10 и можно выполнять след. действие. |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Цитата:
1. Заранее известно сколько кадров в анимации. Инициализируем счетчик на это количество кадров (n1.counter=10) и функции onEnterFrame уменьшаем его, как дошел до нуля анимация закончилась. 2. В последний кадр мувиклипа с анимацией прописать одну строчку кода, которая оповещает, что анимация закончилась, например, высылать событие: dispatchEvent(new Event("animation_done",true));
. . .
//На руте или мувике в котором вся анимация крутится слушаем это событие
addEventListener("animation_done", onAnimationDone);
. . .
private function onAnimationDone(e:Event):void {
trace(e.target); // ссылка на мувик, который закончил анимацию
}
|
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:25. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|