hasEventListener()方法:
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
willTrigger()方法:
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器.
hasEventListener() 与 willTrigger()的区别是:hasEventListener() 只检查它所属的对象,而 willTrigger() 检查整个事件流以查找由type参数指定的事件。
为了判断事件流的上游是否能处理某个事件,应该借助“willTrigger()”方法进行检查。当事件流的节点对象调用“willTrigger()”方法后,不仅检查调用该方法的对象,同时还会检查该对象的上游节点。如果发现相应的事件侦听器,则返回true。“willTrigger()”方法虽然简单,但是不能提供确切的事件侦听器数目。
如果在代码中遍历事件流对象,并配合“hasEventListener()”方法,能够获得某个事件的侦听器数量。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
applicationComplete="init();">
<mx:Script>
<!--[CDATA[
private function init():void {
this.stage.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
// btn1.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
trace("hasEventListener: " + btn1.hasEventListener(MouseEvent.MOUSE_OUT));
trace("willTrigger: " + btn1.willTrigger(MouseEvent.MOUSE_OUT));
}
private function onMouseOut(event:MouseEvent):void {
//
}
]]-->
</mx:Script>
<mx:Button x="183" y="242" label="Button" width="180" height="100" id="btn1"/>
</mx:Application>
输出:
hasEventListener: false
willTrigger: true
本文深入解析EventDispatcher对象的hasEventListener()与willTrigger()方法的功能,阐述它们如何用于检查特定事件类型的侦听器,重点讨论了两个方法在检查范围上的差异,并通过代码示例演示了实际应用。
2528

被折叠的 条评论
为什么被折叠?



