public function addEventListener(
type:String, //动作类型
listener:Function, //调用的方法
useCapture:Boolean = false, //确定侦听器是运行于捕获阶段、目标阶段还是冒泡阶段。 如果将 useCapture 设置为 true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。 如果 useCapture 为 false,则侦听器只在目标或冒泡阶段处理事件,用这个参数搭配stopPropagation()/stopImmediatePropagation()可以做些很偏门的事
priority:int = 0, priority参数用于设置该事件侦听器的优先级。默认值为0,但你可以将它设置为负整数值或正整数值。将优先执行此数字较大的事件侦听器。对于具有相同优先级的事件侦听器,则按它们的添加顺序执行,因此将优先执行较早添加的侦听器 useWeakReference:Boolean = false
可以使用useWeakReference参数来指定对侦听器函数的引用是弱引用还是正常引用。通过将此参数设置为true,可避免侦听器函数在不再需要时仍然存在于内在中的情况。Flash Player使用一项称为“垃圾回收”的技术从内在中清除不再使用的对象。如果不存在对某个对象的引用,则该对象被视为不再使用。垃圾回收器不考虑弱引用,这意味着如果侦听器函数仅具有指向它的弱引用,则符合垃圾回收条件
):void
事件流:
stopPropagation() 与 stopImmediatePropagation() 都能阻止后续的侦听行为,即能阻挡掉事件流中事件的冒泡,简而言之就是让后面的侦听都不执行。
两者的区别在于,stopImmediatePropagation 会让当前对象的次优先级的所有监听都不执行,
一般情况下两者用哪个都可以,但比如下面代码,这种使用stopImmediatePropagation()更有效