flash事件冒泡的理解

1.事件冒泡只针对于显示对象事件的处理。非显示对象此功能无效。

2.对于显示对象,事件处理包括三个阶段:捕获阶段,目标阶段,冒泡阶段。

目标对象是理解这三个阶段的关键。

目标对象,即派发事件的对象。如果是鼠标事件,则是舞台离stage层次最远的鼠标响应对象target(即舞台最上层响应到鼠标的对象)。

捕获阶段对象:stage--……target.parent.parent--target.parent 如设置了捕获阶段响应,则触发事件执行方法

目标阶段对象:target  触发事件执行方法

冒泡阶段:target.parent--target.parent.parent……stage 如设置了冒泡阶段响应,则触发事件执行方法

3.不是所有的显示对象的事件都会有上门三个阶段,事件是否具有冒泡阶段是通过参数控制的。

this.dispatchEvent(new Event("cevent",false)); 这样发了一个事件

蓝色参数false表示发事件时不冒泡,true表示发事件时冒泡

 a.addEventListener("cevent",function():void{trace("原始论坛目标发出的事件");},false);

红色参数false表示侦听目标或冒泡阶段事件,true表示侦听在捕获、目标阶段的事件。(无论如何设置,捕获阶段和冒泡阶段的响应是互斥的,即一次事件流循环中只能响应一次)

4.同一个对象的同一事件,捕获阶段和冒泡阶段是互斥的,打开了捕获阶段的接听。

adobe官方关于使用事件流机制进行优化的案例

http://help.adobe.com/zh_CN/as3/mobile/WS948100b6829bd5a67edfb831266c0b5fc6-8000.html




原文地址:https://www.cnblogs.com/hisiqi/p/3074492.html