一。三个阶段:捕获(父->子),目标(触发事件流的对象),冒泡(子->父:具体的处理事件应该是在这个过程),所以如果父容器和子容器都有注册事件监听器,那么触发事件的书序应该显示子,后世父,因为在冒泡是触发的事件。前提是事件确实触发在子对象上,比如一个button上有个textfield,都注册了鼠标点击事件,如果点击了textfield,那么两个事件都会触发,不过textfield在前,button在后而已。(注:不是每个事件都有三个阶段,例如enterframe事件就没有,会直接调度到目标节点,并不参与捕获阶段和冒泡阶段)。
二。
if (event.eventPhase == EventPhase.AT_TARGET)
{
myFunc();
}
可以指定到底哪个阶段来具体触发函数。
currentTarget属性包含对当前正在处理事件对象的对象的引用。就是添加该事件侦听器的对象。
三。阻止冒泡:有时只想当前的对象响应事件,而显示对象列表的其他显示对象不响应事件,则需要阻止冒泡。
如果某对象的一个事件同时添加多个监听,stopPropagation将把该事件注册的所有监听处理函数执行完后,再阻止该事件继续向上冒泡;而 stopImmediatePropagation方法将本次处理函数执行完后就立即阻止事件继续向上冒泡(即同一事件的其它监听函数将不会执行,哪怕是同一个对象注册的多个相同的事件的响应器)。
四。取消默认行为:
许多事件都有默认执行的关联行为。例如,如果用户在文本字段中键入一个字符,则默认行为就是在文本字段中显示该字符。由于可以取消 TextEvent.TEXT_INPUT
事件的默认行为,因此您可以使用 preventDefault()
方法来防止显示该字符。
不可取消行为的一个示例是与 Event.REMOVED
事件关联的默认行为,只要 Flash Player 从显示列表中删除显示对象,就会生成该事件。由于无法取消默认行为(删除元素),因此 preventDefault()
方法对此默认行为无效。
您可以使用 Event.cancelable
属性来检查是否可以防止与特定事件关联的默认行为。如果 Event.cancelable
的值为 true
,则可以使用 preventDefault()
来取消事件;否则,preventDefault()
无效。
五。添加事件侦听器的参数(addEventListener):
1.useCapture 参数,可以控制侦听器将处于活动状态
的事件流阶段。如果 useCapture 设置为 true,侦听器将在事件流的捕获阶段成为活动状
态。如果 useCapture 设置为 false,侦听器将在事件流的目标阶段和冒泡阶段处于活动状
态。要在事件流的所有阶段侦听某一事件,您必须调用 addEventListener() 两次,第一次
调用时将 useCapture 设置为 true,第二次调用时将 useCapture 设置为 false。
2.可以使用 useWeakReference 参数来指定对侦听器函数的引用是弱引用还是正常引用。通过
将此参数设置为 true,可避免侦听器函数在不再需要时仍然存在于内存中的情况。Flash
Player 使用一项称为“垃圾回收”的技术从内存中清除不再使用的对象。如果不存在对某个
对象的引用,则该对象被视为不再使用。垃圾回收器不考虑弱引用,这意味着如果侦听器函
数仅具有指向它的弱引用,则符合垃圾回收条件。
六。实现IEventDispatcher接口,可以自定义事件。