![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Всем привет! За и против такого подхода:
class Events { private static var _someEvent:SomeEventClass = new SomeEventClass("type", ...); public static function get someEvent():SomeEventClass { return _someEvent.clone(); } } ... dispatchEvent(Events.someEvent); //Somwhere in someTarget object; ... ... someTarget.addEventListener(Events.someEvent.type, someListener); ... Последний раз редактировалось Silicium; 18.02.2012 в 21:55. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Однотипные события "1 класс = 1 типСобытия"?
Кастомные события без кастомных полей? Ни разу не было надо. Добавлено через 4 минуты По сути Вы заменяете выражение new Event на Event#clone(); Посмотрите реализацию метода clone(). Там тот же самый new Event().
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Да, верно. Просто меня порой напрягает обилие строковых констант, задающих типы событий. И вообще я сначала думал без клонирования обойтись.
Добавлено через 2 минуты Честно говоря сейчас смотрю, и сам понять не могу, че это мне взбрело в голову. Или я просто забыл) Добавлено через 13 минут А, вот, вспомнил. Надоело писать следующее: dispatchEvent(new SomeEventClass(SomeEventClass.SOME_EVENT_TYPE, customParams, bubbles, cancelable)); Тогда в класса Event: |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Тут как-то давно была небольшая баталия по поводу: HelicopterEvent.UP; HelicopterEvent.DOWN; HelicopterEvent.ATTACK; против HelicopterUpEvent; HelicopterDownEvent; HelicopterAttackEvent; То есть один класс события с константами против (3...n) классов "однотипных" событий. Моя позиция очевидна. По крайней мере, для меня ©. Добавлено через 10 минут Цитата:
Цитата:
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 18.02.2012 в 22:55. |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Не-не-не, Вы не поняли (вернее, я не сказал). В топикстарте ахинея. Я как раз подумал про
потом, когда начал тему писать, в голове всплыло ложное это: поэтому и написал не то, что хотел А строковый тип он пусть и будет строковый тип, понятно, что в подписчик так или иначе его передавать, но вот символьную длину в аргументе диспатча использование стат. метода сокращает. По поводу 3*n классов я с Вашей точкой зрения согласен. В данном случае вопрос о создании класса под каждое событие не ставился. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
package { import flash.events.Event; public class NewEvent extends Event { public static const TYPE:String = "NewEvent"; public var data:*; public function NewEvent(data:*) { super(TYPE, false, false); this.data = data; } public override function clone():Event { return new NewEvent(this.data); } public override function toString():String { return formatToString("NewEvent", "data"); } } }
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Э, неет) Это как раз годится, если под каждое событие свой класс, ведь тут установка типа в конструктор вшита. В моем случае под отдельный тип события отдельный метод заточен, но уж никак не класс.
Добавлено через 2 минуты так какова Ваша позиция? Сдается мне, что я не правильно ее понял. Последний раз редактировалось Silicium; 18.02.2012 в 23:35. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Это радует)))
Тогда как Вам такой вариант? Боюсь на этом моя фантазия истощается. group.addEventListener(NewEvent.TYPE1, newEventHandler); group.dispatchEvent(new NewEvent(1, "Харасо!")); Просто как бы Вы не крутили, нужен идентификатор типа и нужно получать строковый тип в подписке. И как ни извращайся, строковые константы – лучшее решение. Какой бы монстр ни получался, недовольство здесь только от лени. Читабельность кода хуже, информативность – лучше. Парадокс, однако. Добавлено через 6 минут Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Хм... задним местом чую некоторый конфликт, но не могу понять его природу. Кажется, будто из за неполноты высказываний. Так вот все мое предложение целиком:
class Events { public static const SOME_TYPE:String = "type 1"; public static const SOME_OTHER_TYPE:String = "type 2"; puiblic static function someEvent(customParams:*):SomeEventClass { return new SomeEventClass(SOME_TYPE, customParams, bubbles, cancelable); } puiblic static function someOtherEvent(customParams:*):SomeEventClass { return new SomeEventClass(SOME_OTHER_TYPE, customParams, bubbles, cancelable); } } ... o.addEventListener(Events.SOME_TYPE, someListener); //При подписки лучше, конечно, константа ... dispatchEvent(Events.someEvent(params)); //А тут вот так |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Бессмысленное усложнение кода.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 15:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|