![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Nov 2009
Сообщений: 425
|
Собственно как описать один приёмник для двух событий разных типов, не исключая при этом типизацию данных и не описывая некую вспомогательную функцию, которая бы вызывалась в обоих приемниках (второе не нравится лишней писаниной)?
|
|
|||||
|
Регистрация: Nov 2009
Сообщений: 425
|
т.е. я правильно понял: Event является суперклассом для MouseEvent и FocusEvent и поэтому такое объявление типа данных событийного объекта будет справедливым? =)
или всё же каша у меня в голове сейчас? |
|
|||||
|
Каши нет, всё верно.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 425
|
хмм... резонный вопрос назрел: в каких случаях тогда следует указывать явный тип данных, соответствующий конкретному событию? или это из серии: глянул в код через полгода-год и понял к какому именно событию относится данный приёмник и где искать слушатель?
|
|
|||||
|
Цитата:
|
|
|||||
|
Регистрация: Nov 2009
Сообщений: 425
|
Цитата:
или как-то иначе производиться должны проверка реального типа данных события и его приведения к нему? |
|
|||||
|
Можно еще так:
var mouseEvent:MouseEvent = e as MouseEvent; if (mouseEvent != null) { ... } var focusEvent:FocusEvent = e as FocusEvent if (focusEvent != null) { ... } Однако, я бы не стал делать один приемник на несколько событий, а потом лепить там свичи и всяческие ифы - это ООП наоборот получается. Если есть одинаковый код в 2-х обработчиках - сделайте по-человечески - вынесите его в метод и вызывайте в этих обработчиках метод Подписка одного обработчика на 2 события оправдана только если внутри него нет приведений типов, т.е. НЕ рассматриваются данные, пришедшие в e:Event (специфические для конкретных типов событий) вообще. Последний раз редактировалось expl; 26.10.2010 в 23:08. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 425
|
Цитата:
![]() всем спасибо за помощь ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|