Я вижу странность в пузырях событий, что говорит о том, что я не совсем понимаю, как это должно работать.
У меня есть компонент, расширяющий DataGroup, и средство визуализации элементов отправляет событие (которое всплывает).
// MyRenderer.mxml
<s:ItemRenderer>
<s:Button click='dispatchEvent(new Event('customEvent',true))' />
</s:ItemRenderer>
DataGroup добавляет прослушиватель для события к себе.
// MyDataGroup.mxml
<s:DataGroup itemRenderer="MyRenderer" creationComplete='onCreationComplete()'>
<fx:Metadata>
[Event(name='customEvent',type='flash.events.Event')]
</fx:Metadata>
<fx:Script>
private function onCreationComplete():void
{
addEventListener('customEvent',onCustomEvent);
}
private function onCustomEvent(event:Event):void
{
}
</fx:Script>
</s:DataGroup>
Родитель группы данных также добавляет прослушиватель для события.
// MyComponent.mxml
<s:Group>
<MyDataGroup customEvent='onCustomEventHandler()' />
</s:Group>
Я ожидал, что обработчик, зарегистрированный в MyDataGroup
, должен сначала перехватить событие, а затем обработчик в MyComponent
.
Тем не менее, я вижу обратное, т. Е. Попало в MyComponent
, затем в MyDataGroup
. Когда пойман, event.phase == EventPhase.BUBBLING
.
Что здесь происходит? Почему я вижу это поведение?
Я использую Flex 4.0.