Пакет | flash.events |
Класс | public class EventDispatcher |
Наследование | EventDispatcher ![]() |
Реализует | IEventDispatcher |
Подклассы | AnimatorBase, Camera, ContextMenu, ContextMenuItem, DataProvider, DisplayObject, FileReference, FileReferenceList, FileStream, Icon, IKManager, IKMover, IME, LoaderInfo, LocalConnection, Locale, Microphone, NativeApplication, NativeMenu, NativeMenuItem, NativeWindow, NetConnection, NetStream, NetStreamPlayOptions, PrintJob, RadioButtonGroup, Screen, ServiceMonitor, ShaderJob, SharedObject, Socket, Sound, SoundChannel, SQLConnection, SQLStatement, StyleSheet, Timer, Transition, TransitionManager, Tween, URLLoader, URLStream, XMLSignatureValidator, XMLSocket |
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Цели событий являются важным компонентом модели событий в Flash® Player. Цель события является основным фактором, определяющим прохождение потока событий по иерархии списка отображения. Когда происходит такое событие, как щелчок мыши или нажатие клавиши, Flash Player отправляет объект 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 | |
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным. | EventDispatcher | |||
[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным. | EventDispatcher |
EventDispatcher | () | Конструктор |
public function EventDispatcher(target:IEventDispatcher = null)
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Агрегирует экземпляр класса 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 |
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях. Регистрировать прослушиватели событий можно во всех узлах списка отображения для определенного типа события, фазы и приоритета.
После успешной регистрации прослушивателя событий нельзя изменить его приоритет путем дополнительных вызовов метода addEventListener()
. Чтобы изменить приоритет прослушивателя, необходимо сначала вызвать метод removeListener()
. Затем можно зарегистрировать прослушиватель еще раз с новым уровнем приоритета.
Следует учесть, что после регистрации прослушивателя последующие вызовы метода addEventListener()
с другим значением свойства type
или useCapture
приводят к регистрации другого прослушивателя. Например, если сначала был зарегистрирован прослушиватель со свойством useCapture
в значении true
, он прослушивает события только в фазе захвата. Если вызвать метод addEventListener()
еще раз с тем же объектом прослушивателя, но со свойством useCapture
в значении false
, то будет два прослушивателя: один — прослушивающий в фазе захвата, а другой — в фазах назначения и восходящей цепочки.
Нельзя зарегистрировать прослушиватель событий только для фазы цели или только для фазы пузырей. Эти фазы объединяются при регистрации, так как фаза пузырей применяется только к предкам целевого узла.
Если прослушиватель событий больше не нужен, его можно удалить, вызвав метод removeEventListener()
; иначе могут возникнуть проблемы с памятью. Объекты с зарегистрированным прослушивателями событий не очищаются из памяти автоматически, так как сборщик мусора не удаляет объекты, на которые есть ссылки.
Копирование экземпляра EventDispatcher не приведет к копированию всех присоединенных к нему прослушивателей событий. (Если для вновь созданного узла требуется прослушиватель событий, его необходимо добавить после создания узла.) Однако если экземпляр EventDispatcher перемещается, все зарегистрированные для него прослушиватели событий перемещаются вместе с ним.
Если прослушиватель регистрируется для узла в тот момент, когда на нем обрабатывается событие, то в текущей фазе он не запускается, однако может запуститься в следующей фазе потока события, например в фазе пузырей.
Если прослушиватель событий удаляется из узла в момент обработки события, он все равно запускается текущими действиями. После удаления прослушиватель событий больше не вызывается (если не будет снова зарегистрирован для дальнейшей обработки).
Параметры
type:String — Тип события.
| |
listener:Function — Функция прослушивателя, обрабатывающая событие. Эта функция должна принимать объект Event в качестве единственного параметра и не должна что-либо возвращать, как показано в примере:
У функции может быть любое имя. | |
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 |
Передает событие в поток событий. Целью события является объект EventDispatcher, для которого вызывается метод dispatchEvent()
.
Параметры
event:Event — Объект Event, отправляемый в поток событий. Если осуществляется повторная отправка события, автоматически создается его клон. После отправки события нельзя изменить его свойство target , поэтому необходимо создать новую копию события, чтобы обеспечить правильное выполнение повторной отправки.
|
Boolean — Значение true , если событие было успешно отправлено. Значение false указывает на ошибку или на то, что для события был вызван метод preventDefault() .
|
Error — Достигнут предел рекурсии отправки события.
|
hasEventListener | () | метод |
public function hasEventListener(type:String):Boolean
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа. Это позволяет определить, где объект EventDispatcher изменил обработку типа события в иерархии потока событий. Чтобы определить, запускает ли на самом деле определенный тип событий прослушиватель, используйте метод willTrigger()
.
Разница между hasEventListener()
и willTrigger()
заключается в том, что hasEventListener()
просматривает только тот объект, которому принадлежит, а willTrigger()
просматривает весь поток событий для события, указанного в параметре type
.
Когда метод hasEventListener()
вызывается из объекта LoaderInfo, учитываются только те прослушиватели, к которым есть доступ у вызывающего объекта.
Параметры
type:String — Тип события.
|
Boolean — Значение true , если прослушиватель заданного типа зарегистрирован; false , если нет.
|
См. также
removeEventListener | () | метод |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Удаляет прослушиватель из объекта 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 |
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа. Этот метод возвращает значение true
, если прослушиватель событий запускается в любой фазе потока событий, когда событие заданного типа отправляется данному объекту EventDispatcher или его потомкам.
Разница между методами hasEventListener()
и willTrigger()
заключается в том, что hasEventListener()
просматривает только тот объект, которому принадлежит, а willTrigger()
просматривает весь поток событий для события, указанного в параметре type
.
Когда метод willTrigger()
вызывается из объекта LoaderInfo, учитываются только те прослушиватели, к которым есть доступ у вызывающего объекта.
Параметры
type:String — Тип события.
|
Boolean — Значение true , если прослушиватель заданного типа будет запущен; false , если нет.
|
activate | Событие |
flash.events.Event
flash.events.Event.ACTIVATE
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным. Это многоадресное событие, которое отправляется всеми объектами EventDispatcher, для которых зарегистрированы прослушиватели данного события. Дополнительную информацию о многоадресных событиях см. в описании класса DisplayObject.
КонстантаEvent.ACTIVATE
определяет значение свойства type
объекта события Activitate
.
Примечание. Это событие не имеет фазы захвата и фазы пузырей, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет.
Данное событие имеет следующие свойства.
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; нет поведения по умолчанию для отмены. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Любой экземпляр EventDispatcher, для которого зарегистрирован прослушиватель события ACTIVATE. |
См. также
deactivate | Событие |
flash.events.Event
flash.events.Event.DEACTIVATE
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным. Это многоадресное событие, которое отправляется всеми объектами EventDispatcher, для которых зарегистрированы прослушиватели данного события. Дополнительную информацию о многоадресных событиях см. в описании класса DisplayObject.
КонстантаEvent.DEACTIVATE
определяет значение свойства type
объекта событияdeactivate
.
Примечание. Это событие не имеет фазы захвата и фазы пузырей, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет.
Данное событие имеет следующие свойства.
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; нет поведения по умолчанию для отмены. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Любой экземпляр EventDispatcher, для которого зарегистрирован прослушиватель события DEACTIVATE. |
См. также
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)); } }