Добавление событий (ActionScript event) к классу

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

  1. Добавление ActionScript event к пользовательскому классу
  2. Дополнительная информация

Когда Вы создаете пользовательский класс в AS3 (ActionScript 3), то у Вас есть возможность добавить обработчик события (ActionScript event handler) и слушатель события  к этому классу непосредственно. Это освобождает Вас от лишней работы по написанию кода события к каждому экземпляру этого класса. Например, Вы создаете веб-сайт и на его страницах хотите добавить кнопку для перехода в раздел FAQ. Для этой цели можно было бы создать символ кнопки и поместить его в нужное место на сцене, но тогда Вы обязаны присваивать имя каждому экземпляру этой кнопки, а в скрипте добавлять слушатель события. Например:

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

Сделать это просто:

  • добавьте в конструктор класса слушатель события (event listener);
  • добавьте в класс обработчик события (event handler).

Помните, что Вы можете обращаться к классу через ключевое слово this. В этом случае слушатель события будет добавляться к каждому экземпляру этого класса в момент его создания.

Добавление ActionScript event к пользовательскому классу

Создайте класс (см. урок «Создание основной структуры класса»).

Внутри конструктора этого класса введите ключевое слово this и поставьте точку.

Наберите addEventListener и поставьте круглые скобки.

Внутри круглых скобок введите событие и поставьте запятую, затем имя функции-обработчика события. Например:

Поставьте точку с запятой после закрывающей круглой скобки.

В верхней части кода сделайте запись об импорте суперкласса, например:

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

ActionScript event

Сохраните файл класса (Ctrl + S).

Откройте fla-файл или создайте новый.

Создайте MovieClip.

Actionscript movieclip

Сделайте этот MovieClip экземпляром уже созданного ранее класса (см. урок «Создание класса документа»):

– в панели Library щелкните правой кнопкой мыши на символе кнопки

– в появившемся контектном меню кликните на Properties (свойства)

movieclip properties

– появится диалоговое окно. В нем нужно выбрать опцию Export for ActionScript и затем в поле ввода Class набрать имя класса.

символ actionscript

– сохраните изменения, нажав кнопку ОК.

Протестируйте flash-ролик, нажав Ctrl + Enter.

Ролик начнет воспроизводится.

Запустите событие (ActionScript event) – щелкните на кнопке.

В панели Output появится контрольный текст.

окно Output

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

Вы должны быть уверены в том, что импортируете правильный суперкласс в свой пользовательский класс. Сделать это просто: все классы событий хранятся в пакете flash.events, поэтому если Ваша цель добавить событие «щелчок мышью», то Вам нужно будет импортировать flash.events.MouseEvent. Если же Вы сомневаетесь в том какой пакет выбрать для конкретного события, то просто наберите в Google запрос по подходящему классу. В поисковой выдаче на одной из первых позиций будет ссылка на страницу с официальной документацией Actionscript 3 для этого события, там Вы и найдете имя пакета.

Добавление определенного слушателя события (ActionScript event) к пользовательскому классу не избавляет Вас от той же процедуры по другим слушателям. Т.е. если Вы добавили слушатель и обработчик события для щелчка мышью, но хотите еще чтобы экземпляр этого класса реагировал на перетаскивание (drag), то Вам нужно будет добавить к нему соотвествующее событие тоже. Кроме того, теоретически, Вы можете назначить два разных обработчика одного и того же события! В этом случае, один назначается классу (вызывается первым при запуске события), второй его экземпляру.

Добавление событий (ActionScript event) к классу: 4 комментария

  1. У меня все работает, если только прописать свойства класса у .fla документа, у разных кнопок выводится сообщение при клике, при этом для кнопки класс не определялся При создании как тут написано выдает ошибку – “в класс MyButton должен входить подкласс flash.display.SimpleButton”

  2. Что-то тяжеловато понять. Даже простое повторение примера не работает. А что не так, хз 1.Создал мувик с именем MyButton 2.В свойствах записал его как класс MyButton 3.Создал as3-файл в корне проекта с именем(пусть как в примере) MyButton и кодом как в примере 4.Запустил.Ошибок нет.В output пусто при клике на мувике

    1. Разобрался. В папке с проектом не должно быть других проектов. Теперь работает

  3. Разобралась, правда, не сразу. Но возник такой вопрос: а почему кнопка должна являться расширением класса MovieClip, а не SimpleButton? Как-то не очень логично получается: мы можем сразу сделать кнопку кнопкой, но вместо этого мы зачем-то делаем её мувиклипом…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *