Проблема понимания распространения событий AS3EnterFrame
У меня проблемы с пониманием пути, по которому Событие EnterFrame идет для Распространения. Я понимаю, что у событий есть 3 фазы: захват, AtTarget и Bubbling.
Когда я смотрю на класс flash.events.Event, я вижу, что Event не Bubble.
Если я добавлю Eventlistener в любой DisplayObject, он получит событие Enter frame. Если я сделаю то же самое с useCapture = true, Событие не будет получено.
Но не должны ли все события пройти через фазу захвата? Если я проверяю цель Event, она возвращает получающий объект DisplayObject в качестве своей цели.
Изменяется ли цель для события EnterFrame при распространении или новое событие создается и передается каждому DisplayObject?
Сохраняет ли Flash отдельный список со всеми объектами DisplayObject? Поскольку событие EnterFrame даже получается, когда объект DisplayObject не добавляется в дерево отображения?
1 ответ
Это событие не имеет ни "фазы захвата", ни "пузырьковой фазы", что означает, что прослушиватели событий должны быть добавлены непосредственно к любым потенциальным целям, независимо от того, находится ли цель в списке отображения или нет.
Итак, вернемся к вашему вопросу (ам):
Если я добавлю Eventlistener в любой DisplayObject, он получит событие Enter frame. Если я сделаю то же самое с useCapture = true, Событие не будет получено.
useCapture = true // это ничего не сделает, так как ENTER_FRAME не имеет "фазы захвата"
Но не должны ли все события пройти через фазу захвата?
Только события, которые имеют "фазу захвата"
Если я проверяю цель Event, она возвращает получающий объект DisplayObject в качестве своей цели.
Это правильно
Изменяется ли цель для события EnterFrame при распространении или новое событие создается и передается каждому DisplayObject?
Он отправляется индивидуально для каждой цели.
Сохраняет ли Flash отдельный список со всеми объектами DisplayObject? Поскольку событие EnterFrame даже получается, когда объект DisplayObject не добавляется в дерево отображения?
Это ответ в комментарии Sunil D