Главная / Action Script 3
Пакетflash.events
Классpublic class EventDispatcher
НаследованиеEventDispatcher Inheritance Object
Реализует 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
Версии среды выполнения:  1.0 9

Класс EventDispatcher реализует интерфейс IEventDispatcher и является базовым классом для класса DisplayObject. Класс EventDispatcher позволяет любому объекту в списке отображения стать целью события и в этом качестве использовать методы интерфейса IEventDispatcher.

Цели событий являются важным компонентом модели событий в Flash® Player. Цель события является основным фактором, определяющим прохождение потока событий по иерархии списка отображения. Когда происходит такое событие, как щелчок мыши или нажатие клавиши, Flash Player отправляет объект Event в поток событий из корня списка отображения Тогда объект события проходит путь через список отображения, пока не достигнет цели события, после чего он возвращается в начало пути. Путь к цели события и обратно разделен на три фазы: фаза захвата проходит от корня к последнему узлу перед целевым узлом события; фаза цели включает только целевой узел события; а фаза пузырей включает все последующие узлы на пути обратно к корневому узлу списка отображения.

Как правило, чтобы дать определенному пользователем классу возможность отправлять события, проще всего расширить класс EventDispatcher. Если это невозможно (например, если класс уже расширяет другой класс), можно внедрить интерфейс IEventDispatcher, создайте элемент EventDispatcher и создайте простые процедуры для направления вызовов в собранный EventDispatcher.

Посмотреть примеры



Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
  
Агрегирует экземпляр класса EventDispatcher.
EventDispatcher
  
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях.
EventDispatcher
  
Передает событие в поток событий.
EventDispatcher
  
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
  
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
  
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа.
EventDispatcher
События
 Событие Сводка Определено
  [многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным.EventDispatcher
  [многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным.EventDispatcher
Сведения о конструкторе
EventDispatcher()Конструктор
public function EventDispatcher(target:IEventDispatcher = null)

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 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
Версии среды выполнения:  1.0 9

Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях. Регистрировать прослушиватели событий можно во всех узлах списка отображения для определенного типа события, фазы и приоритета.

После успешной регистрации прослушивателя событий нельзя изменить его приоритет путем дополнительных вызовов метода addEventListener(). Чтобы изменить приоритет прослушивателя, необходимо сначала вызвать метод removeListener(). Затем можно зарегистрировать прослушиватель еще раз с новым уровнем приоритета.

Следует учесть, что после регистрации прослушивателя последующие вызовы метода addEventListener() с другим значением свойства type или useCapture приводят к регистрации другого прослушивателя. Например, если сначала был зарегистрирован прослушиватель со свойством useCapture в значении true, он прослушивает события только в фазе захвата. Если вызвать метод addEventListener() еще раз с тем же объектом прослушивателя, но со свойством useCapture в значении false, то будет два прослушивателя: один — прослушивающий в фазе захвата, а другой — в фазах назначения и восходящей цепочки.

Нельзя зарегистрировать прослушиватель событий только для фазы цели или только для фазы пузырей. Эти фазы объединяются при регистрации, так как фаза пузырей применяется только к предкам целевого узла.

Если прослушиватель событий больше не нужен, его можно удалить, вызвав метод removeEventListener(); иначе могут возникнуть проблемы с памятью. Объекты с зарегистрированным прослушивателями событий не очищаются из памяти автоматически, так как сборщик мусора не удаляет объекты, на которые есть ссылки.

Копирование экземпляра 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) — Определяет сильную или слабую степень ссылки на прослушиватель. Сильная ссылка (по умолчанию) запрещает прослушивателю выполнять сборку мусора. Слабая ссылка не препятствует этому.

Функции элементов на уровне класса не подвергаются очистке, поэтому useWeakReference может иметь значение true для функций элементов на уровне класса, не опасаясь их очистки. Если задать для useWeakReference значение true для прослушивателя, который является вложенной внутренней функцией, то он будет очищен и перестанет быть постоянным. Если создаются ссылки на внутреннюю функцию (путем ее сохранения в другой переменной), то она не будет очищаться и останется постоянной.


Выдает
ArgumentError — Заданный объект listener не является функцией.

См. также

dispatchEvent()метод 
public function dispatchEvent(event:Event):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Передает событие в поток событий. Целью события является объект EventDispatcher, для которого вызывается метод dispatchEvent().

Параметры

event:Event — Объект Event, отправляемый в поток событий. Если осуществляется повторная отправка события, автоматически создается его клон. После отправки события нельзя изменить его свойство target, поэтому необходимо создать новую копию события, чтобы обеспечить правильное выполнение повторной отправки.

Возвращает
Boolean — Значение true, если событие было успешно отправлено. Значение false указывает на ошибку или на то, что для события был вызван метод preventDefault().

Выдает
Error — Достигнут предел рекурсии отправки события.
hasEventListener()метод 
public function hasEventListener(type:String):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 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
Версии среды выполнения:  1.0 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
Версии среды выполнения:  1.0 9

Проверяет, зарегистрирован ли прослушиватель событий в объекте 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
Версии среды выполнения:  1.0 9

[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным. Это многоадресное событие, которое отправляется всеми объектами EventDispatcher, для которых зарегистрированы прослушиватели данного события. Дополнительную информацию о многоадресных событиях см. в описании класса DisplayObject.

Константа Event.ACTIVATE определяет значение свойства type объекта события Activitate.

Примечание. Это событие не имеет фазы захвата и фазы пузырей, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет.

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetЛюбой экземпляр EventDispatcher, для которого зарегистрирован прослушиватель события ACTIVATE.

См. также

deactivate Событие  
Тип объекта события: flash.events.Event
свойство Event.type = flash.events.Event.DEACTIVATE

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным. Это многоадресное событие, которое отправляется всеми объектами EventDispatcher, для которых зарегистрированы прослушиватели данного события. Дополнительную информацию о многоадресных событиях см. в описании класса DisplayObject.

Константа Event.DEACTIVATE определяет значение свойства type объекта событияdeactivate.

Примечание. Это событие не имеет фазы захвата и фазы пузырей, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет.

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
targetЛюбой экземпляр EventDispatcher, для которого зарегистрирован прослушиватель события DEACTIVATE.

См. также

Примеры Как пользоваться примерами
EventDispatcherExample.as

В следующем примере используются классы EventDispatcherExample и CustomDispatcher, подкласс EventDispatcher, чтобы показать процесс создания и отправки пользовательского события. Этот код выполняет следующие задачи.
  1. Конструктор EventDispatcherExample создает локальную переменную dispatcher и назначает ее новому экземпляру CustomDispatcher.
  2. Внутри CustomDispatcher задается строка, присваивающая событию имя action, и объявляется метод doAction(). При вызове этого метода создается событие action и отправляется с помощью метода EventDispatcher.dispatchEvent().
  3. Затем используется свойство dispatcher для добавления прослушивателя события action и связанного метода подписчика actionHandler(), который при отправке события просто печатает информацию о нем.
  4. Вызывается метод 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));
    }
}