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

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2011, 11:53
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 21  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Да, хардкод, конечно.
Например такой триггер:
Код AS3:
private function tutorial2_onInvite():void {
	//invite panel
	Odnoklassniki.showInvite("Вступай со мной в пионерский отряд, будем играть вместе!", null);
	super.nextStep();
}
И в коде соответственно
Код AS3:
item.callbackWhenTrigger = tutorial2_onInvite;
@markII, а зачем туториалу что-то менять динамически?

Старый 03.11.2011, 12:39
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 22  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
Цитата:
а зачем туториалу что-то менять динамически?
Psycho Tiger нет мне не для туториала нужно.Я пытаюсь сделать архитектуру для квест менеджера.Поэтому все квесты должны загружаться динамически(я же не буду забивать около 100 квестов вручную).С туториалом немного полегче.Я делал его немного по другому.У меня был мувклип с порезанными масками и стрелочками.я написал класс который слушает события по определенному сценарию.На каждом шаге я вешал листерны хардкорно в зависимости от шага туториала и все нормально работало.С квестами все намного сложнее если они не в туториале

Старый 03.11.2011, 12:51
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 23  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Ну вообще эта реализация натолкнула меня на мысли с иньекциями.

Делается некий класс со списком ссылок на функции внутри.

Далее в этот список можно внедрить некую функцию с каким-то именем ссылки, да хоть и в масив без имен.
Внедрять в том месте где она удет использоваться.

Далее в том месте где инстансы квестов инициализируются можно брать эти функции из этого списка и присваивать в переменную класса.

Ну и продумать какую-то грамотную схему с именами, чтоб можно было не заморачиваясь брать по имени динамически сформированному.

У меня так сделана обработка данных с сервера. Но там так Классы инжектятся, насчет коллбеков так не пробовал но можно попробовать.

Как вариант делать не коллбек а событие. Тогда вообще всё просто. Присваиваем в класс квеста вместо ссылки на коллбек - имя события которое должно диспатчится(ну имя события лучше одно просто некий параметр настраиваемый в событие вставить чтоб отфильтровать). Ну и в нужные моменты его диспатчим. И кто-то должен это слушать и реагировать. Сложность может быть разве что с вложенностью и прослушиванием этих событий если дерево объектов сложное и глубокое.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 03.11.2011, 13:42
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 24  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
Т.е. я так понял ты имеешь ввиду следущее :
1 - сделать массив с айдишниками квестов.
2 - В каждую ячейку массива положить строковые имена событий(их может быть несколько а может быть только одно)
3 - повесить слушатели на эти события.Как только эти события выполнятся, то проверять эти события с теми данными которые я указал в квесте.Например у меня там указано собрать 3 огурца.Тогда когда я собрал 3 или больше огурцов(положил их в модель или еще куда то),то поднимается событие
Код AS3:
СucumberUpdateEvent(UPDATE,numCucumber:Number)
, где numCucumber - это количество огурцов которых собрали.И по идее функция обработчик считает что огурцов 3 , удаляет этот слушатель, и отправляет результат на сервер с текущим id квеста, сервер отвечает, повышается уровень ну и вся вытекающая муть .В общем приходит новый айдишник квеста, вешаются новые слушатели ну и так далее.
Получается затык только в функции обработчике, которая ловит эти слушатели .Так как события все разные то и функции должны обрабатывать все события по разному.Как быть тогда с этой функцией-обработчиком, чтобы она обрабатывала разные события?

Старый 03.11.2011, 13:51
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 25  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Код AS3:
// В родительском классе подписываемся
cucumberQuest.addEventListener(QuestEvent.QUEST_DONE, onCucumerQuestDone);
cucumberQuest.someParam = "блаблабла"
 
//*********************************
// в квесте диспатчим
dispatchEvent(new QuestEvent(QuestEvent.QUEST_DONE, someParam))
 
//*********************************
//обработчик в родительском
private function onCucumerQuestDone(event:QuestEvent):void
{
    if(event.currentTarget.data == "блаблабла"){}
}
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 03.11.2011, 14:13
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 26  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
Код AS3:
//*********************************
// в квесте диспатчим
dispatchEvent(new QuestEvent(QuestEvent.QUEST_DONE, someParam))
Мы берем инстанс этого класса из массива по айдишнику текущего квеста.Вешаем на него слушателя. Все стало ясно, но я не понимаю как этот класс должен получать откуда то данные которые ему нужны для того чтобы продиспачить это событие?
Код AS3:
//*********************************
//обработчик в родительском
private function onCucumerQuestDone(event:QuestEvent):void
{
    if(event.currentTarget.data == "блаблабла"){}
}
так как этот обработчик в родительском классе то это значит что мне надо под каждый класс квеста написать свой обработчик этого события
Код AS3:
//*********************************
// в квесте диспатчим
dispatchEvent(new QuestEvent(QuestEvent.QUEST_DONE, someParam))
тогда получается что мне нужно диспачить разные события для каждого квест класса?Например
Код AS3:
dispatchEvent(new СucumberQuestEvent(СucumberQuestEvent.QUEST_DONE, someParam))
Так?


Последний раз редактировалось markII; 03.11.2011 в 14:15.
Старый 03.11.2011, 14:19
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 27  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Да нет же.

1. Данные можно брать из некоего класса-списка констант или бд или хмл, вобщем какое-то хранилище данных с описаниями квестов.
2. ну вообще необязательно. В идеале один обработчик со свичем по какому-о параметру в самом событии. И да, событие придется написать кастомное, чтобы в нем было несколько параметров. Например один из параметров может быть тип квеста, а остальные - это те данные которые нужны в этом типе квеста.
3. Диспатчится одно событие, но внутри него есть пачка с данными которые могут отличаться в зависимости от типа квеста.

Кастомный параметр может быть и один всего, но с типом обжект, а в этот обжект уже пихаем всё что нужно.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 03.11.2011, 14:25
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 28  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
масочки с дырочками
Как-то кустарно очень.

Старый 03.11.2011, 14:27
markII вне форума Посмотреть профиль Отправить личное сообщение для markII Найти все сообщения от markII
  № 29  
Ответить с цитированием
markII

Регистрация: Nov 2009
Сообщений: 56
Цитата:
Данные можно брать из некоего класса-списка констант или бд или хмл, вобщем какое-то хранилище данных с описаниями квестов.
я имел ввиду данные которые должен отследить квест.Т.е. если я собрал 3 огурца, то квест менеджер должен поймать это события, что 3 огурца собрано.Откуда он будет знать что 3 огурца собрано, чтобы продиспачить событие dispatchEvent(new QuestEvent(QuestEvent.QUEST_DONE, someParam)) ?

Старый 03.11.2011, 14:27
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 30  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
масочки с дырочками
Как-то кустарно очень.
Так полет фантазии же)
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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

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


 


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


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