Показать сообщение отдельно
Старый 04.10.2006, 21:58
acd вне форума Посмотреть профиль Отправить личное сообщение для acd Найти все сообщения от acd
  № 1  
Ответить с цитированием
acd

Регистрация: 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>
Загружаю я xml-документ, добираюсь до тегов <ACTION> и начинается самое интересное: я отдаю команду мувиклипу на проигрывание “n1.play()” соответственно, так как метод асинхронный, то передается управление в тот блок кода, который собственно вызвал “n1.play()”, и соответственно я уже добираюсь до второго действия, начинается проигрываться “n1.play()” (во второй раз), но первое действие еще не закончилось, а цикл уже пошел выдавать второе, а потом третье и т.д.

Вопрос собственно такой, как мне дождаться полного проигрывания первого действия, и только потом перейти ко второму, а потом к третьему и т.д.?