68. Event Part6. Путешествие малыша event

junior – серия статей для начинающих ActionScript-разработчиков.
Все статьи серии:
http://flashpress.ru/blog/category/junior/

В предыдущей статье, если помните, я говорил о том, что в момент когда срабатывает событие, создается один экземпляр event, и передается он всем слушателям события. Я решил написать эту небольшую статью и показать вам на примере то, как создается объект event, и как он передается “из рук в руки” между всеми слушателями.

Напишем небольшое приложение в котором имеются следующие классы:

  • Application.as – главный класс приложения
  • ClassA.as – дополнительный класс внутри Application
  • ClassB.as – дополнительный класс внутри Application
  • Dispatcher.as – класс который отправляет событие
  • MyEvent.as – наш пользовательский класс-событие

В момент инициализации приложения, три класса Application, ClassA и ClassB подписываются на событие MyEvent.TEST у объекта Dispatcher. У объекта Dispatcher есть “облако событие”, и все кто вызывает метод addEventListener, начинают слушать это облако. Схематически это показано на картинке:
event-part5-1

Когда необходимо отправить событие, в классе Dispatcher создается объект event, это экземпляр класса MyEvent. Далее этот экземпляр передается в “облако событий”. В облаке проверяется, есть ли слушатели этого события. Если слушатели есть – всем поочереди отправляется этот объект event. Посмотрите на картинке как это работает:
event-part5-2

Что бы вы убедились в том, что в этом процесс действительно создается только один объект event, в классе MyEvent, мы создадим public переменную names – массив имен. В момент создания события этот массив пустой. Далее каждый объект, который слушает это событие, в момент получения, добавляет в конец массива своё имя. Затем, после того как наше событие event обошло всех слушателей, мы в классе Dispatcher выведем на экран массив names, и увидим какое путешествие совершил наш объект event. Т.е. мы сможем узнать в каких объектах и в какой последовательности побывал event.

Достаточно теории, давайте уже приступим к написанию кода. Вот как выглядит класс Application.as:


ClassA.as:


ClassB.as:


Ну и последний класс Dispatcher.as который отправляет событие:


Запустив это приложение, и нажав на кнопку в виде красного квадрата, в окне Output мы увидим сообщение вида:

names = application,classA,classB

Это означает что, созданный нами в классе Dispatcher, объект event сперва попал в лапы класса Application, затем сработал обработчик события в классе ClassA, ну и последним в этой очереди объект event получил класс ClassB. В итоге мы убедились что объект event действительно создается один раз в момент срабатывания события.

Да прeбудет с вами Flash.
Serious Sam

Эту статью прочитали 1138 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress: