![]() |
|
||||||||||
|
|||||
|
Да, хардкод, конечно.
Например такой триггер: private function tutorial2_onInvite():void { //invite panel Odnoklassniki.showInvite("Вступай со мной в пионерский отряд, будем играть вместе!", null); super.nextStep(); } @markII, а зачем туториалу что-то менять динамически?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 56
|
Цитата:
|
|
|||||
|
Ну вообще эта реализация натолкнула меня на мысли с иньекциями.
Делается некий класс со списком ссылок на функции внутри. Далее в этот список можно внедрить некую функцию с каким-то именем ссылки, да хоть и в масив без имен. Внедрять в том месте где она удет использоваться. Далее в том месте где инстансы квестов инициализируются можно брать эти функции из этого списка и присваивать в переменную класса. Ну и продумать какую-то грамотную схему с именами, чтоб можно было не заморачиваясь брать по имени динамически сформированному. У меня так сделана обработка данных с сервера. Но там так Классы инжектятся, насчет коллбеков так не пробовал но можно попробовать. Как вариант делать не коллбек а событие. Тогда вообще всё просто. Присваиваем в класс квеста вместо ссылки на коллбек - имя события которое должно диспатчится(ну имя события лучше одно просто некий параметр настраиваемый в событие вставить чтоб отфильтровать). Ну и в нужные моменты его диспатчим. И кто-то должен это слушать и реагировать. Сложность может быть разве что с вложенностью и прослушиванием этих событий если дерево объектов сложное и глубокое.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 56
|
Т.е. я так понял ты имеешь ввиду следущее :
1 - сделать массив с айдишниками квестов. 2 - В каждую ячейку массива положить строковые имена событий(их может быть несколько а может быть только одно) 3 - повесить слушатели на эти события.Как только эти события выполнятся, то проверять эти события с теми данными которые я указал в квесте.Например у меня там указано собрать 3 огурца.Тогда когда я собрал 3 или больше огурцов(положил их в модель или еще куда то),то поднимается событие , где numCucumber - это количество огурцов которых собрали.И по идее функция обработчик считает что огурцов 3 , удаляет этот слушатель, и отправляет результат на сервер с текущим id квеста, сервер отвечает, повышается уровень ну и вся вытекающая муть .В общем приходит новый айдишник квеста, вешаются новые слушатели ну и так далее. Получается затык только в функции обработчике, которая ловит эти слушатели .Так как события все разные то и функции должны обрабатывать все события по разному.Как быть тогда с этой функцией-обработчиком, чтобы она обрабатывала разные события? |
|
|||||
// В родительском классе подписываемся 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 == "блаблабла"){} }
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 56
|
//********************************* // в квесте диспатчим dispatchEvent(new QuestEvent(QuestEvent.QUEST_DONE, someParam)) //********************************* //обработчик в родительском private function onCucumerQuestDone(event:QuestEvent):void { if(event.currentTarget.data == "блаблабла"){} } //********************************* // в квесте диспатчим dispatchEvent(new QuestEvent(QuestEvent.QUEST_DONE, someParam)) Так? Последний раз редактировалось markII; 03.11.2011 в 14:15. |
|
|||||
|
Да нет же.
1. Данные можно брать из некоего класса-списка констант или бд или хмл, вобщем какое-то хранилище данных с описаниями квестов. 2. ну вообще необязательно. В идеале один обработчик со свичем по какому-о параметру в самом событии. И да, событие придется написать кастомное, чтобы в нем было несколько параметров. Например один из параметров может быть тип квеста, а остальные - это те данные которые нужны в этом типе квеста. 3. Диспатчится одно событие, но внутри него есть пачка с данными которые могут отличаться в зависимости от типа квеста. Кастомный параметр может быть и один всего, но с типом обжект, а в этот обжект уже пихаем всё что нужно.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
масочки с дырочками
![]() Как-то кустарно очень.
__________________
Сам себе репортер |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 56
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|