Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Цели событий являются важным компонентом модели событий во Flash® Player и Adobe® AIR® Цель события является основным фактором, определяющим прохождение потока событий по иерархии списка отображения. Когда происходит такое событие, как щелчок мыши или нажатие клавиши, Flash Player или приложение AIR отправляет объект Event в поток событий из корня списка отображения. Тогда объект события проходит путь через список отображения, пока не достигнет цели события, после чего он возвращается в начало пути. Путь к цели события и обратно разделен на три фазы: фаза захвата проходит от корня к последнему узлу перед целевым узлом события; фаза цели включает только целевой узел события; а фаза восходящей цепочки включает все последующие узлы на пути обратно к корневому узлу списка отображения.
Как правило, чтобы дать определенному пользователем классу возможность отправлять события, проще всего расширить класс EventDispatcher. Если это невозможно (например, если класс уже расширяет другой класс), можно внедрить интерфейс IEventDispatcher, создайте элемент EventDispatcher и создайте простые процедуры для направления вызовов в собранный EventDispatcher.
Метод | Определено | ||
---|---|---|---|
EventDispatcher(target:IEventDispatcher = null)
Агрегирует экземпляр класса EventDispatcher. | EventDispatcher | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Посылает событие в поток событий. | EventDispatcher | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | |||
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. | EventDispatcher |
EventDispatcher | () | Конструктор |
public function EventDispatcher(target:IEventDispatcher = null)
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Агрегирует экземпляр класса EventDispatcher.
Класс EventDispatcher обычно используется в качестве базового класса: большинству разработчиков не требуется эта функция конструктора. Однако более опытным разработчикам, внедряющим интерфейс IEventDispatcher, использовать этот конструктор необходимо. Если не удается расширить класс EventDispatcher и вместо этого приходится внедрять интерфейс IEventDispatcher, используйте этот конструктор, чтобы агрегировать экземпляр класса EventDispatcher.
Параметрыtarget:IEventDispatcher (default = null ) — Целевой объект для событий, отправляемых объекту EventDispatcher. Этот параметр используется, когда экземпляр EventDispatcher агрегируется классом, внедряющим IEventDispatcher; это необходимо, чтобы содержащий его объект мог быть целью для событий. Не используйте этот параметр в простых случаях, когда класс расширяет EventDispatcher.
|
addEventListener | () | метод |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. Можно регистрировать прослушиватели событий в любом узле из списка отображения для каждого типа события, фазы и приоритета.
После успешной регистрации прослушивателя событий невозможно изменить его приоритет путем дополнительных вызовов addEventListener()
. Чтобы изменить приоритет прослушивателя, необходимо сначала вызвать метод removeListener()
. Затем можно снова зарегистрировать прослушиватель с новым приоритетом.
Следует учесть, что после регистрации прослушивателя последующие вызовы метода addEventListener()
с другим значением свойства type
или useCapture
приводят к регистрации другого прослушивателя. Например, прослушиватель, изначально зарегистрированный со значением useCapture
, равным true
, прослушивает только во время фазы захвата. Если вызвать метод addEventListener()
еще раз с тем же объектом прослушивателя, но со свойством useCapture
в значении false
, то будет два прослушивателя: один — прослушивающий в фазе захвата, а другой — в целевой фазе и фазе восходящей цепочки.
Невозможно зарегистрировать прослушиватель события только для целевой фазы или для фазы восходящей цепочки. Эти фазы соединены при регистрации, поскольку восходящая цепочка применяется только к предшественникам целевого узла.
Если прослушиватель событий больше не нужен, его можно удалить, вызвав метод removeEventListener()
, иначе могут возникнуть проблемы с памятью. Прослушиватели событий не удаляются из памяти автоматически, так как сборщик мусора не удаляет прослушиватель, пока существует объект, отправляющий соответствующее событие (если параметру useWeakReference
не задано значение true
).
Копирование экземпляра EventDispatcher не приводит к копированию прослушивателей событий, присоединенных к нему. (Если для вновь создаваемого узла требуется прослушиватель событий, его необходимо присоединить после создания узла.) При этом при перемещении экземпляра EventDispatcher присоединенные к нему прослушиватели событий перемещаются вместе с ним.
Если прослушиватель регистрируется для узла в тот момент, когда на нем обрабатывается событие, то в текущей фазе он не запускается, однако может запуститься в следующей фазе потока события, например в фазе восходящей цепочки.
Прослушиватель событий, удаленный из узла во время обработки события на этом узле, будет запускаться текущими операциями. После удаления прослушиватель событий больше не вызывается (если не будет снова зарегистрирован для дальнейшей обработки).
Параметры
type:String — Тип события.
| |
listener:Function — Функция прослушивателя, обрабатывающая событие. Эта функция должна принимать объект Event в качестве единственного параметра и не должна что-либо возвращать , как показано в примере:
function(evt:Event):void Эта функция может иметь любое имя. | |
useCapture:Boolean (default = false ) —
Определяет, работает ли прослушиватель в фазе захвата или в целевой фазе и в фазе восходящей цепочки. Если значение useCapture равно true , прослушиватель обрабатывает событие только во время фазы захвата, но не во время целевой фазы или фазы восходящей цепочки. Если значение useCapture равно false , то прослушиватель обрабатывает событие только в целевой фазе или фазе восходящей цепочки. Чтобы прослушивать событие во всех трех фазах, необходимо вызвать addEventListener() дважды: один раз с useCapture в значении true , а другой — с useCapture в значении false .
| |
priority:int (default = 0 ) — Уровень приоритета прослушивателя событий. Приоритет определяется 32-разрядным целым числом со знаком. Чем больше число, тем выше приоритет. Все прослушиватели событий с приоритетом n обрабатываются перед прослушивателями с приоритетом n-1. Прослушиватели с одинаковым приоритетом обрабатываются в порядке их добавления. Значение приоритета по умолчанию равно 0.
| |
useWeakReference:Boolean (default = false ) — Определяет, является ли ссылка на прослушиватель «сильной» или «слабой». «Сильная» ссылка (по умолчанию) предотвращает удаление прослушивателя сборщиком мусора. «Слабая» ссылка позволяет удалить прослушиватель. Функции элементов уровня класса не подлежат удалению в качестве мусора, вследствие чего можно установить |
Выдает
ArgumentError — Заданный объект listener не является функцией.
|
dispatchEvent | () | метод |
public function dispatchEvent(event:Event):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Посылает событие в поток событий. Целью события является объект EventDispatcher, для которого вызывается метод dispatchEvent()
.
Параметры
event:Event — Объект события, передаваемый в поток событий. Если осуществляется повторная отправка события, автоматически создается его клон. После отправки события нельзя изменить его свойство target , поэтому необходимо создать новую копию события, чтобы обеспечить правильное выполнение повторной отправки.
|
Boolean — Значение true в случае успешной передачи события. Значение false указывает на ошибку или на то, что для события был вызван метод preventDefault() .
|
Выдает
Error — Достигнут предел рекурсии отправки события.
|
hasEventListener | () | метод |
public function hasEventListener(type:String):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. Это позволяет определить, где объект EventDispatcher изменил обработку типа события в иерархии потока событий. Чтобы определить, запускает ли на самом деле определенный тип событий прослушиватель, используйте метод willTrigger()
.
Различие между hasEventListener()
и willTrigger()
заключается в том, что hasEventListener()
анализирует только объект, к которому он принадлежит, тогда как willTrigger()
— весь поток событий для события, указанного параметром type
.
Когда метод hasEventListener()
вызывается из объекта LoaderInfo, учитываются только те прослушиватели, к которым есть доступ у вызывающего объекта.
Параметры
type:String — Тип события.
|
Boolean — Значение true , если прослушиватель указанного типа зарегистрирован; в противном случае – false .
|
Связанные элементы API
removeEventListener | () | метод |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Удаляет прослушиватель из объекта EventDispatcher. При отсутствии прослушивателя, зарегистрированного с объектом EventDispatcher, вызов этого метода не оказывает эффекта.
Параметры
type:String — Тип события.
| |
listener:Function — Удаляемый объект прослушивателя.
| |
useCapture:Boolean (default = false ) —
Указывает, был ли прослушиватель зарегистрирован для фазы захвата или целевой фазы и фазы восходящей цепочки. Если прослушиватель зарегистрирован и для фазы захвата, и для фаз цели и восходящей цепочки, метод removeEventListener() необходимо вызвать дважды: один раз с useCapture() в значении true , а другой раз с useCapture() в значении false .
|
willTrigger | () | метод |
public function willTrigger(type:String):Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. Этот метод возвращает значение true
, если прослушиватель события запускается в течение любой фазы потока событий, когда событие указанного типа передается объекту EventDispatcher или любому из его нижестоящих элементов.
Разница между методами hasEventListener()
и willTrigger()
заключается в том, что hasEventListener()
просматривает только тот объект, которому он принадлежит, а willTrigger()
просматривает весь поток событий для события, указанного в параметре type
.
Когда метод willTrigger()
вызывается из объекта LoaderInfo, учитываются только те прослушиватели, к которым есть доступ у вызывающего объекта.
Параметры
type:String — Тип события.
|
Boolean — Значение равно true при запуске прослушивателя указанного типа; в противном случае значение равно false .
|
activate | Событие |
flash.events.Event
свойство Event.type =
flash.events.Event.ACTIVATE
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. Это многоадресное событие, которое отправляется всеми объектами EventDispatcher, для которых зарегистрированы прослушиватели данного события. Дополнительную информацию о многоадресных событиях см. в описании класса DisplayObject.
КонстантаACTIVATE
определяет значение свойства type
объекта события activate
.
Примечание. Это событие не имеет фазы захвата и фазы восходящей цепочки, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет.
На устройствах AIR for TV это событие никогда не отправляется автоматически. Однако его можно отправить вручную.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Любой экземпляр DisplayObject, для которого зарегистрирован прослушиватель события activate . |
Связанные элементы API
deactivate | Событие |
flash.events.Event
свойство Event.type =
flash.events.Event.DEACTIVATE
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. Это многоадресное событие, которое отправляется всеми объектами EventDispatcher, для которых зарегистрированы прослушиватели данного события. Дополнительную информацию о многоадресных событиях см. в описании класса DisplayObject.
КонстантаEvent.DEACTIVATE
определяет значение свойства type
объекта события deactivate
.
Примечание. Это событие не имеет фазы захвата и фазы восходящей цепочки, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет.
На устройствах AIR for TV это событие никогда не отправляется автоматически. Однако его можно отправить вручную.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Любой экземпляр DisplayObject, для которого зарегистрирован прослушиватель события deactivate . |
Связанные элементы API
EventDispatcherExample
и CustomDispatcher
, подкласс EventDispatcher
, чтобы показать процесс создания и отправки пользовательского события. Для этого выполняются следующие задачи:
- Конструктор
EventDispatcherExample
создает локальную переменнуюdispatcher
и назначает ее новому экземпляру CustomDispatcher. - Внутри
CustomDispatcher
задается строка, присваивающая событию имяaction
, и объявляется методdoAction()
. При вызове этого метода создается событиеaction
и отправляется с помощью методаEventDispatcher.dispatchEvent()
. - Затем используется свойство
dispatcher
для добавления прослушивателя событияaction
и связанного метода подписчикаactionHandler()
, который при отправке события просто печатает информацию о нем. - Вызывается метод
doAction()
, отправляющий событиеaction
.
package { import flash.display.Sprite; import flash.events.Event; public class EventDispatcherExample extends Sprite { public function EventDispatcherExample() { var dispatcher:CustomDispatcher = new CustomDispatcher(); dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler); dispatcher.doAction(); } private function actionHandler(event:Event):void { trace("actionHandler: " + event); } } } import flash.events.EventDispatcher; import flash.events.Event; class CustomDispatcher extends EventDispatcher { public static var ACTION:String = "action"; public function doAction():void { dispatchEvent(new Event(CustomDispatcher.ACTION)); } }
Tue Jun 12 2018, 11:34 AM Z