Flex中的事件传播方向是一个回环,先从根容器发出,到达目标对象后又返回到根容器,即经过以下三个阶段:
Capturing phase-->Targeting phase-->Bubbling phase.
Capturing phase:从根容器出发,到达目标对象的父容器
Targeting phase:定位到目标对象
Bubbling phase:从目标对象的父窗口出发,返回到根容器
以以下的例子说明:
Application Application
Panel
TitleWindow
Button
Capturing phase: Application-->TitleWindow
Targeting phase:Button
Bubbling phase:TitleWindow-->Application
注意, 大多数情况下,真正的根节点容器应该是Stage,然后是SystemManager,才到Appication.
默认情况下,容器不会在Capturing阶段监听事件,除非显式地调用容器的addEventListener(event_type,funtion,use_captrue)方法,将use_capture参数置为true时,才会在事件传播的capturing阶段触发事件。如果一个容器的事件监听在capturing阶段捕捉到事件后,事件仍会流传下去,亦即是会经过bubbling阶段,但在bubbling阶段,此容器对这个事件的监听不会发生作用。即是说,如果一个容器想在capturing和bubbling两个阶段的监听都发生作用,就要注册两次监听,一次use_capture参数设置为true,别一次设置为false。