![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Требуется организовать диспетчер сообщений
для группы классов(храняться в своих as-файлах,по linkage подключаются символы-изображения). Диспечер должен принимать сообщения,генерируемые членами классов и сам определять реакцию на все поступающие сообщения. Пример: class obj1 Extends Moviclip { var listEvents:array ...} class obj2 Extends Moviclip { var listEvents:array ...} class MyDisp {} //---Хорошо бы, но как? Obj1 в некоторое время генерирует сообшение obj1.sendmessage("onTop"); Диспетчер поймал это сообщение и передал дальше по своему алгоритму. obj2 в свою очередь вызывает метод-реакцию на сообщение "onTop" obj2.onTop(); Пробовал использовать EventDispatcher, но ничего не выходит- попадает в бесконечный цикл и виснит.Постоянные ошибки с требованием статического определения методов вызова (sendmessage например). Надо как то классы подключить к EventDispatcher, но как? Oт AsBroadCaster -a отказался,ведь уже время AS2. Кто нибудь подсказать может? |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
По мне, если задача достаточно четко сформулирована,
то дело совсем за малым - за реализацией ![]() Примени какой нибудь паттерн - observer к примеру... ![]() |
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
У меня такое ощущение что обмен сообшениями в as2 закрытая тема для обсуждения.Стараюсь регулярно посты просматривать,но подобные вопросы мало у кого отклик вызывают.Или все такие гуру, что "проехали" давно эту тему?
|
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
Честно говоря, у меня не было необходимости в создании специального (собственного) класса для работы с сообщениями,
я использовал старый-добрый подход из ASBroadcaster, и добавлял к этому подходу некий адаптер, который эти сообщения "фильтрует"... например, класс который рассылает сообщения - есть три поля - private var broadcastMessage:Function; public var addListener:Function; public var removeListener:Function; под конкретную задачу создаю класс ЗадачаDispatcher или ЗадачаAdapter и подписываю его на события из нужных классов. при отсылке сообщений из экземпляров классов дополнительно указываю ссылку на экземпляр (плюс если нужно дополнительные параметры) this.broadcastMessage("onEvent", this, param); Адаптер обрабатывает сообщения и пересылает куда нужно, если нужно ![]() схема меня вполне устраивает. Замечу что ко всему этому я часто добавляю конвейер, но это уже другая история.... ![]() Последний раз редактировалось john; 12.07.2004 в 15:35. |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
Затабуированная тема : )))
Просмотри первую страницу вопросов, заданных в этом разделе и подумай, может ли кто-ньть из спрашивающих ответить на твой вопрос? Вряд ли. Теперь остаются те, кто отвечают. Их можно условно разделить по половому признаку: на тех, кто уже решил задачу, подобную твоей, и тех, кто ее может решить, но еще не решали. Для первых это решение - "ноу хау" И бесплатно они его тебе не отдадут. А вторые, скажи, с какой радости они будут за тебя решать? Опять же из рассчета "бесплатно" : ))) Вывод: написать алгоритм самому. Начать с блок-схемы, а потом аккуратнейшим образом реализовать. Будет быстрее и дешевле.
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Про твой конвеер я читал и пытался разобраться.Но все как то сложно да и трудно укладывается в голове.Все эти aplay..бр
Есть замечательная парадигма -ООП.На ней крутится Макромедия.Понять как "у них" это организовано и использовать - мне кажеться так надо действовать. Вот раньше,помню запал я на smalltalk и мыслить одно время стал по другому. Бродкаст тут не подходит потому что посути это широковещательная станция(как радио) в одном направлении. При его использовании нет взаимодействия экземпляров классов.Они только слушают и выполняют. |
|
|||||
|
[++]
|
В чём собственно проблема то? Создаешь статические методы и члены и через них делаешь чего там тебе надо. Если это то, как я понял...
|
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Дело в том, что при вызове статических методов я смогу работать только с классами и у меня будет ограниченный набор событий.При работе в динамике у меня могут возникнуть новые события, которые не попадут под схему взаимодействия при обмене через статические методы.
|
|
|||||
|
[++]
|
Так ведь ты можешь в качестве аргумента методу передавать функцию, которую надо вызывать
|
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Тогда функция,которую я буду вызывать после обработки тоже должна быть статической и это значить, что ее надо определять в каждом классе!.Таким образом все идет к определению некого "абстрактного" для классов кода.Патерны,которые предлагает jhon вещь интересная,но для as2 я про такие не слышал.
|
![]() |
Часовой пояс GMT +4, время: 19:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|