EventDispatcher类是用来管理侦听器函数的,这个大家都知道。但EventDispatcher类常用的五个方法,大家是否都会用呢?
1. addEventListener 和 removeEventListener
这两个是最常用的了。我们对于不再需要的侦听,要及时的remove掉,这样可以释放内存,优化运行速度。尤其是在大规模的工程中,及时的从内存中清除不必要的元件,这个是非常重要的,可千万不要忽视。
2. hasEventListener 和 willTrigger
发觉网上很多的说明文件,都是直接照搬帮助文件,真想不通这样的文章有什么用。题外话,有感而发而已,下面进入正题。
按照惯例,我还是举个例子来说明,舞台布置如下图(很熟悉吧,哈哈,我都是这样测试的)
添入代码如下:
function p1(event:MouseEvent):void
{
trace("t1:"+event.type);
}
t1.addEventListener(MouseEvent.MOUSE_DOWN, p1);
trace(t1.t2.hasEventListener(MouseEvent.MOUSE_DOWN));
trace(t1.t2.willTrigger(MouseEvent.MOUSE_DOWN));
运行后,返回:
false
true
分析结果如下:
hasEventListener检测目标对象是否注册特定侦听器,因此返回false。
willTrigger不仅检测目标对象,还检测目标对象的父对象,由于t1注册了侦听器,因此返回true。
顺便说句废话:这两个方法都是检测当前状态,所以如果放到注册侦听器的语句之前,返回的都是false。
3. dispatchEvent
这个方法提供了一个自定义侦听事件的接口。帮助文档上只有简单的说明,没有提供相关实例。
不过这个方法属于较为高端的用法,毕竟AS3.0自带了那么多方法和事件,大多数情况,都足够用了。
这篇文章,我先不具体介绍这个方法的使用实例了。相关文章,我会单独再写一篇博文的。