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

Вернуться   Форум Flasher.ru > Блоги > Nirth

Оценить эту запись

Kreed

Запись от Nirth размещена 02.02.2010 в 22:48

Поюзав полгодика Матэ, я решил что мне хочется чего нибудь своего, в основном, я был очень доволен EventMap, но хотелось все же, возможности создавать карты не только через MXML, но и через AS (тоесть банальный FrontController минус Singleton).
Так же меня не устраивало в Mate, то что он использует события, это кажется интересной идеей но за полгода я не разу ей не воспользовался, но пришлось создавать кучу классов- событий. Так же, для борьбы с дубликатами имен, вмето выдумывания каждый раз нового имени, я решил ввести namescape ( IMessage.ns свойство ), чтобы разные сообщения могли иметь одно имя, и находится в разных пространствах и не мешать друг другу.

Вот наданный момент есть два способа задавать карты событий, через Meta Tags:
Код AS3:
[Route("first")]
public var firstAction:SampleAction = new SampleAction();
 
[Route("second")]
public function handleSecond( message:IMessage ):void
{
	//info( 'received', 'handleSecond:', message );
}
Синтаксис выглядит на данный момент так: [Route(name="messageName", ns="messageNS", priority="10")], для сообщений без неймспейса и/или приоритета, можно писать кратко: [Route("messageName")]

И через MXML:
Код:
<kreed:Router id="mxmlRouter">
	<kreed:Route name="second">
		<test:SampleAction />
    </kreed:Route>
</kreed:Router>
Тут я пытаюсь дублировать Mate местами.

Сорсы примера можно посмотреть тут: http://kreed.kiichigo.eu/lab/srcv/index.html
Саму библиотеку, когда хочу на выходных почистить и выложить на GitHub
Всего комментариев 4

Комментарии

Старый 03.02.2010 05:39 wvxvw вне форума
wvxvw
 
Аватар для wvxvw
А зачем там нужна метадата? Все бы и без нее работало... :S
Т.е. это получается даже не через рефлекшн методы достаются, а вообще практически наугад Метод он хотя бы гарантировано один будет с одним именем, а так это ж вообще вешалка - а что если метаданных будет несколько однотипных?
Обновил(-а) wvxvw 03.02.2010 в 05:46
Старый 04.02.2010 00:20 Nirth вне форума
Nirth
 
Аватар для Nirth
Мета или МХМЛ это для разных способ описания FrontController'а, иногда удобно через мхмл, иногда через АС.

Можно иметь несколько методов для одного и того же нотификейшена, если хочется логически разбить выполняемые процедуры по группам, а не держать все в одном месте.

Цитата:
Т.е. это получается даже не через рефлекшн методы достаются, а вообще практически наугад
с чего ты взял?
Старый 04.02.2010 15:14 wvxvw вне форума
wvxvw
 
Аватар для wvxvw
ОК, пример:
Код AS3:
[Route("Now guess who I am!")]
public override function handleSecond( message:IMessage ):void
{
	//info( 'received', 'handleSecond:', message );
}
Кроме всего прочего, мета - это самый НЕэффективный способ найти нужный метод или свойство. Самый эффективный, простой, надежный, "защищенный" компилятором - это ссылка, хуже, но терпимо - вызов метода через рефлекшн (благо во флеше рефлекшн сильно упрощен). Искать свойстов или метод через метадату это значит, особенно вконтексте флекса, распарсить несколько тон XMLя + дальше все равно ломится через рефлекшн. Т.е. уровень надежности такого кода стремится к нулю потому что его либо должен проверять компилятор (чего он естесственно делать не будет), либо программист должен все время работать со справочником.
Как бы есть и без того куча нареканий на реализацию событий во флеше за то, что они используют метадату вместо нормального обращения к свойствам, тем самым добавляя лишнюю динамику и увеличивая количество потенциальных ошибок.
Ну и последний аргумент - метадата добавляет кучу байткода...
Старый 05.02.2010 14:14 Nirth вне форума
Nirth
 
Аватар для Nirth
@wvxvw
Objection Noted, не серьезно спасибо за критику =) Просто у меня всего один аргумент – мне метадата нравится =)
 
Последние записи от Nirth

 


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


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