Использование свойства ActionScript target

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

  1. Использование свойства ActionScript target
  2. Дополнительная информация

Метод addEventListener в Actionscript 3 требует чтобы Вы передавали функцию-обработчик события как один из его аргументов, указывая только её имя. Т.е. никаких аргументов самому обработчику Вы передавать не можете. В большинстве случаев этого, действительно, вполне достаточно. К примеру, если при нажатии кнопки на веб-странице выполняется переход на другую страницу Вашего flash-сайта, то никаких аргументов передавать и не нужно, всё и так понятно.

Но бывают ситуации в которых, нужно точно знать на каком объекте щелкнули. Возьмем калькулятор. Кнопок у него уж точно больше одной, но каждая из них должна реагировать на одно и тоже событие, щелчок мыши, например. Следовательно нужно как-то определять на какой именно кнопке щелкнули.

Именно для этих целей в классе Event есть свойство ActionScript target (цель). Оно содержит в себе ссылку на объект запустивший событие. В действительности ему принадлежит целая серия свойств, которые помогают это сделать. Например, Вы можете узнать имя объекта, используя свойство name

event.target.name

при этом предполагается что имя аргумента, переданного функции event.

Кроме того другие свойства объекта, запустившего событие могут быть также доступны через target. Например, местоположение MovieClip на котором был произведен щелчок получают через

event.target.x
event.target.y

А свойство text текстового поля может стать доступным с помощью

event.target.text

Словом, можно устанавливать различные свойства. Еще несколько примеров. Обработчик поворачивает MovieClip:

event.target.rotation += 30

Здесь прибавляется к уже имеющемуся повороту (если такой есть, конечно) 30 градусов, что заставляет MovieClip повернуться на эту величину при каждом щелчке.

Использование свойства ActionScript target

Создайте функцию-обработчик события. Например:

function clickHandler(event:MouseEvent):void {

}

В фигурных скобках используйте target для получения информации о нужном свойстве объекта

trace(event.target.name);

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

На сцене (stage) создайте экземпляр символа.

Назначьте ему то же самое имя, что Вы использовали при записи слушателя события в предыдущем шаге (см. уроки «Создание символа во Flash CS5» и «Создание экземпляра (Instance). Присвоение имени экземляру»).

Нажмите Ctrl + Enter.

Ролик запуститься.

Запустите событие – щелкните на MovieClip. Событие запуститься.

В окне Output появится сообщение.

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

Существует второе свойство (кроме target), которое передается обработчику – currentTarget. В большинстве случаев оба выполняют одну и ту же работу, но технически они могут ссылаться на два разных объекта: target – объект на котором сфокусировано событие, тогда как currentTarget ссылается на объект, который в данный момент слушает событие.

Например, если у Вас есть кнопка и Вы на ней кликните, то тогда эта кнопка будет target, и так как эта же самая кнопка является слушателем события, то она же будет и currentTarget. Однако, если эту кнопку поместить в MovieClip и добавить событие не к ней а к MovieClip, то в этом случае кнопка будет target (объект на котором щелкают), а MovieClip – currentTarget (объект, слушающий событие). В 99% случаев Вы не будете брать в учет все вышесказанное, но знать об этом надо.