Добавление событий (ActionScript event) к классу
На этом занятии мы рассмотрим 2 вопроса:
- Добавление ActionScript event к пользовательскому классу
- Дополнительная информация
Когда Вы создаете пользовательский класс в AS3 (ActionScript 3), то у Вас есть возможность добавить обработчик события (ActionScript event handler) и слушатель события к этому классу непосредственно. Это освобождает Вас от лишней работы по написанию кода события к каждому экземпляру этого класса. Например, Вы создаете веб-сайт и на его страницах хотите добавить кнопку для перехода в раздел FAQ. Для этой цели можно было бы создать символ кнопки и поместить его в нужное место на сцене, но тогда Вы обязаны присваивать имя каждому экземпляру этой кнопки, а в скрипте добавлять слушатель события. Например:
btnFaq.addEventListener(MouseEvent.CLICK, faqHandler);
Вместо этого Вы можете создать пользовательский класс, представляющий эту кнопку и назначить слушатель и обработчик ActionScript event непосредственно этому классу. Таким образом, событие будет встроено в класс и автоматически применяться к каждому его экземпляру. Вы будете полностью уверены, что при нажатии кнопки ссылка будет вести на нужную страницу.
Сделать это просто:
- добавьте в конструктор класса слушатель события (event listener);
- добавьте в класс обработчик события (event handler).
Помните, что Вы можете обращаться к классу через ключевое слово this. В этом случае слушатель события будет добавляться к каждому экземпляру этого класса в момент его создания.
Добавление ActionScript event к пользовательскому классу
Создайте класс (см. урок «Создание основной структуры класса»).
Внутри конструктора этого класса введите ключевое слово this и поставьте точку.
Наберите addEventListener и поставьте круглые скобки.
Внутри круглых скобок введите событие и поставьте запятую, затем имя функции-обработчика события. Например:
MouseEvent.CLICK, showText
Поставьте точку с запятой после закрывающей круглой скобки.
В верхней части кода сделайте запись об импорте суперкласса, например:
import flash.events.MouseEvent;
Создайте обработчик события (ActionScript event) (см. урок «Создание обработчика Actionscript события»).
Сохраните файл класса (Ctrl + S).
Откройте fla-файл или создайте новый.
Создайте MovieClip.
Сделайте этот MovieClip экземпляром уже созданного ранее класса (см. урок «Создание класса документа»):
– в панели Library щелкните правой кнопкой мыши на символе кнопки
– в появившемся контектном меню кликните на Properties (свойства)
– появится диалоговое окно. В нем нужно выбрать опцию Export for ActionScript и затем в поле ввода Class набрать имя класса.
– сохраните изменения, нажав кнопку ОК.
Протестируйте flash-ролик, нажав Ctrl + Enter.
Ролик начнет воспроизводится.
Запустите событие (ActionScript event) – щелкните на кнопке.
В панели Output появится контрольный текст.
Дополнительная информация
Вы должны быть уверены в том, что импортируете правильный суперкласс в свой пользовательский класс. Сделать это просто: все классы событий хранятся в пакете flash.events, поэтому если Ваша цель добавить событие «щелчок мышью», то Вам нужно будет импортировать flash.events.MouseEvent. Если же Вы сомневаетесь в том какой пакет выбрать для конкретного события, то просто наберите в Google запрос по подходящему классу. В поисковой выдаче на одной из первых позиций будет ссылка на страницу с официальной документацией Actionscript 3 для этого события, там Вы и найдете имя пакета.
Добавление определенного слушателя события (ActionScript event) к пользовательскому классу не избавляет Вас от той же процедуры по другим слушателям. Т.е. если Вы добавили слушатель и обработчик события для щелчка мышью, но хотите еще чтобы экземпляр этого класса реагировал на перетаскивание (drag), то Вам нужно будет добавить к нему соотвествующее событие тоже. Кроме того, теоретически, Вы можете назначить два разных обработчика одного и того же события! В этом случае, один назначается классу (вызывается первым при запуске события), второй его экземпляру.