Event
Решил немного переписать статью

Что такое событие - это экземпляр класса Event, это сигнал о том, что где-то что-то произошло, это брошенный объект, ищющий кто-бы его поймал и обработал.
Обработчики событий - это колбеки, функции обратного вызова имеющие один единственный параметр - событие, это те кто ловит и обрабатывает события.
// добавление обработчика addEvenListener(“some_event”, someEventHandler); // обработчик function someEventHandler(e:Event) { //... }
Конструктор события имеет три параметра: обязательный - type (строковый идентификатор), и два необязательных - bubbles и cancelable. Комбинированием последних двух параметров можно получить 4 вида довольно сильно различающихся по поведению событий.
1. Простое событие
bubbles = false, cancelable=false
Это пожалуй самый распространённый вид событий, события сигнализирующие о чем-то произошедшем в конкретном объекте, и иногда передающие дополнительные параметры.
В случае, когда достаточно одного слушателя и событие должно перестать прослушиваться после первого появления, такие события часто удобно заменять на непосредственные обработчики - колбек-функции с произвольным набором параметров.
2. Всплывающее событие
bubbles = true, cancelable=false
Это событие работающее только с отображаемыми объектами.
Сначала оно ищет обработчики с параметром useCapture=true во всех родителях, начиная от корневого и до родителя объекта-бросателя (Фаза захвата), потом в объекте-бросателе (Фаза цели), и затем обработчики с параметром useCapture=false во всех родителях, начиная от родителя объекта-бросателя и до корневого(Фаза всплытия).
Хотя этот вид события и работает только с отображаемыми объектами, довольно просто реализовать интерфейс IEventDispatcher так, чтобы всплытия работали и с самописными компоновщиками.
3. Событие с возможностью отмены обработки по умолчанию
bubbles = false, cancelable=true
Если один из обработчиков вызывает prevenDefault(), то обработка по умолчанию не выполняется
Используется, когда мы хотим иметь некоторое поведение, которое можно будет отменить извне.
Например некоторый модуль, который ведёт себя самодостаточно, но и бросает события наружу, чтобы мы могли дополнить или отменить поведение по умолчанию.
Выглядеть это будет примерно так:
private function generateSameEvent():vois { // бросаем событие для обработки извне var was_prevent_default:Boolean = dispatchEvent(new Event("same_event", false, true)); // если внешние обработчики не отменили обработку по умолчанию if (!was_prevent_default) { // делаем внутренюю обработку runDefaultSameEventHandler(); } }
4. Отменяемое всплывающее событие
bubbles = true, cancelable=true
Сочетают в себе поведение двух предыдущих видов событий.
Всего комментариев 0
Комментарии
Последние записи от f.g.programmer
- Simple Event Controller (05.01.2011)
- Event (16.10.2010)
- ActionScript 3.0. Правила именования. (25.09.2010)