Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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()” (во второй раз), но первое действие еще не закончилось, а цикл уже пошел выдавать второе, а потом третье и т.д.

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

Старый 04.10.2006, 22:15
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Почитайте статью Евгения Потапенко о механизме конвеера, в его случае это класс на ActionScript 2.0
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 05.10.2006, 03:35
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 3  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
ага... нужно на AS3 переписать.

Старый 05.10.2006, 11:43
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 4  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Как вариант, отказаться от play вообще, и по EnterFrame самостоятельно перемещать все объекты (если на нужный кадр, то gotoAndStop).
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 05.10.2006, 13:08
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от john
ага... нужно на AS3 переписать.
Кстати, мне эта мысль уже приходила в голову.
Тебя подождать или самим переписать?

Старый 05.10.2006, 13:53
acd вне форума Посмотреть профиль Отправить личное сообщение для acd Найти все сообщения от acd
  № 6  
Ответить с цитированием
acd

Регистрация: Oct 2006
Сообщений: 6
Цитата:
Сообщение от Nirth
Почитайте статью Евгения Потапенко о механизме конвеера, в его случае это класс на ActionScript 2.0
спасибо, почитал - интересно..

Старый 05.10.2006, 13:55
acd вне форума Посмотреть профиль Отправить личное сообщение для acd Найти все сообщения от acd
  № 7  
Ответить с цитированием
acd

Регистрация: Oct 2006
Сообщений: 6
Цитата:
Сообщение от MerlinTwi
Как вариант, отказаться от play вообще, и по EnterFrame самостоятельно перемещать все объекты (если на нужный кадр, то gotoAndStop).
Можно поподробнее?

Допустим есть у меня мувиклип бойца. С 1 по 10 кадр - анимация удара.
Главное не забывать, что мне нужно как-то получить знак от мувиклипа, что он прошел с 1 по 10 и можно выполнять след. действие.

Старый 05.10.2006, 16:15
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 8  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Цитата:
Сообщение от acd
мне нужно как-то получить знак от мувиклипа, что он прошел с 1 по 10 и можно выполнять след. действие.
Я вижу два варианта:

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); // ссылка на мувик, который закончил анимацию
}
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 05.10.2006, 17:52
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 9  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
Цитата:
Сообщение от __etc
Кстати, мне эта мысль уже приходила в голову.
Тебя подождать или самим переписать?
да не, сам перепишу. скоро

Старый 05.10.2006, 18:22
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от john
да не, сам перепишу. скоро
Ждём

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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