Запуск ActionScript 3 события с помощью кнопки

На этом занятии мы рассмотрим 2 вопроса:

  1. Запуск ActionScript 3 события с помощью кнопки
  2. Дополнительная информация

Обработчик ActionScript 3 события описывает действия, которые будут происходить после того как событие случится, но, как и обычная функция, он должен быть вызван. Для вызова обработчика служит слушатель события (event listener). Он позволяет назначить объект и событие, вызывающее обработчик.

Обработчик закрепляется за объектом с помощью метода addEventListener, который принимает два аргумента:

  • событие, которое будет запускать обработчик (например, щелчок кнопкой мыши)
  • обработчик, определяющий какие действия будут происходить после того как событие произойдет

Для назначения ActionScript 3 события объекту можно использовать суперкласс Event, описывающий все возможные события встроенные в ActionScript 3. Однако, гораздо лучше использовать подкласс, определяющий более узкую группу событий, например MouseEvent. Большинство из этих подклассов содержат постоянные (const) для частоиспользуемых событий, например MouseEvent.CLICK – вызывает обработчик после того как пользователь щелкнет кнопкой мыши. Также и подкласс KeyboardEvent содержит постоянные для большинства клавиш на клавиатуре, чтобы они при нажатии реагировали соответственно.

Вторым аргументом в слушателе события всегда стоит имя обработчика. Несмотря на то, что обработчик это функция Вам не нужно использовать круглые скобки, которые обычно ставятся после имени функции, т.к. Вы не можете передавать ей какие-либо аргументы. Вот пример записи слушателя события, «привязанного» к кнопке с именем btnAbout и обработчиком, который обеспечивает переход к нужной веб-странице после нажатия этой кнопки:

btnAbout.addEventListener(MouseEvent.CLICK, gotoAbout);

После того как слушатель ActionScript 3 события был добавлен к объекту и записан обработчик события, объект находится в состояния ожидания этого события. Когда же оно происходит объект вызывает обработчик, который производит все необходимые действия.

Вызов/запуск события с помощью кнопки

Создайте кнопку на сцене.

кнопка actionscript

Дайте имя экземпляру этой кнопки в панели Свойства (см. урок «Создание экземпляра (Instance). Присвоение имени экземляру»).

Properties panel

Откройте панель Actions (см. урок «Использование панели Actions»).

Создайте обработчик события (см. урок «Создание обработчика события ActionScript»).

После закрывающей фигурной скобки функции-обработчика события запишите имя экземпляра кнопки и поставьте точку.

Введите

addEventListener();

Внутри круглых скобок наберите

MouseEvent.CLICK,

Далее введите имя обработчика ActionScript 3 события, созданное ранее.

ActionScript 3 событие

Нажмите Ctrl + Enter. Flash Player начнет воспроизводить ролик.

Кликните на кнопке.

Событие запустится и код, записанный в обработчике начнет работать.

В окне Output появится запись, сделанная с помощью метода trace.

Панель Output

Дополнительная информация

Если у Вас кнопка находится внутри MovieClip, то пользователь будет щелкать на двух объектах одновременно! В большинстве случаев Вы будете добавлять слушатель ActionScript 3 события именно к кнопке, а так как у MovieClip не будет слушателя события, то он будет просто игнорировать эти щелчки. Однако, Вы можете закрепить слушатель события за MovieClip тоже. Если обработчик будет тот же, то он сработает два раза: один раз, вызванный кнопкой, второй раз MovieClip. Если же Вы используете другой обработчик для MovieClip, то сработают два разных обработчика: сначала кнопка, затем MoviClip.

Теоритечески, Вы можете помещать неограниченное количество MovieClip друг в друга, а затем присваивать каждому из них разные обработчики, а назначать одно и тоже событие. Все они сработают в нужный момент в последовательности от самого низкого уровня вложения к самому высокому, который можно назвать родительским. Этот процесс известен в ActionScript 3 как "event bubbling" (по аналогии с поведением воздушного пузыря в воде). Т.е. ActionScript 3 событие поднимается от объекта к объекту, каждый из которых может вызывать обработчик если это небходимо.