![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
rake+sprout. Справляются идеально. Генерит, компилит, деплоит.
Единственный минус (для меня), что на ruby
__________________
Сам себе репортер |
|
|||||
|
Регистрация: Dec 2010
Адрес: Химки МО
Сообщений: 95
|
Переделал вот так:
public class ConnectionController extends EventDispatcher { ... protected function dataListener(event:DataEvent):void { ServerDataEventFactory.CreateDispatchEventFromMessage(event.data, this); } } События приложения создаются здесь: public class ServerDataEventFactory { private static var EventsTable:Object = { "table_state":ServerDataTableState, "user_left":ServerDataUserLeft, # класс события "user_sit":ServerDataUserSit, "user_folded":ServerDataUserFolded, "user_raised":ServerDataUserRaised, "user_called":ServerDataUserCalled }; public function ServerDataEventFactory() { } /** * Создает по message соответствующее событие и диспатчит на полученный eventDispatcher * @param message - сообщение от сервера */ public static function CreateDispatchEventFromMessage(message:String, eventDispatcher:EventDispatcher):void { var xml:XML = new XML(message); var klass:Class = EventsTable[xml.localName()]; eventDispatcher.dispatchEvent(klass == null ? new ServerDataUnknown(xml) : new klass(xml)); } } Т. о., если нужно сменить инсточник сообщений с XMLSoket на что-то другое (таймер, сценарий БДТ тестрирования, то достаточно реализовать xml формат в сообщениях нового источника и за источником ничего переделывать не надо) wvxvw спасибо) Добавлено через 22 минуты Еще хочется при добавлении сообщений вообще не трогать класс ServerData. Т.к. все события по данным от сервера ServerDataUserCalled, ServerDataTableState, .. наследуют от ServerData, это можно попробовать сделать так: public class ServerData extends ServerEvent { ... // private static var TokenTable:Array = []; public static function RegisterClassToken(token:String, klass:Class):void { TokenTable[token] = klass; } public static function ClassFromToken(token:String):Class { return TokenTable[token]; } // ... } public class ServerDataEventFactory { /* это уже не нужно * private static var EventsTable:Object = { "table_state":ServerDataTableState }; */ /** * Создает по message соответствующее событие и диспатчит на полученный eventDispatcher * @param message - сообщение от сервера */ public static function CreateDispatchEventFromMessage(message:String, eventDispatcher:EventDispatcher):void { var xml:XML = new XML(message); var klass:Class = ServerData.ClassFromToken(xml.localName()); eventDispatcher.dispatchEvent(klass == null ? new ServerDataUnknown(xml) : new klass(xml)); } } public class ServerDataTableState extends ServerData { ServerData.RegisterClassToken("table_state", ServerDataTableState ); ... } Сообщение будет показывать параметром какой класс события должен разбирать xml данные этого сообщения и какой объект события будет соответствовать данному сообщению. Чем чреват такой подход? Последний раз редактировалось zhoran; 02.03.2011 в 17:45. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:50. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|