且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

常用事件方法及技巧(八) -- EventDispatcher类

更新时间:2022-06-03 07:27:54

    EventDispatcher类是用来管理侦听器函数的,这个大家都知道。但EventDispatcher类常用的五个方法,大家是否都会用呢?

    1. addEventListener 和 removeEventListener

    这两个是最常用的了。我们对于不再需要的侦听,要及时的remove掉,这样可以释放内存,优化运行速度。尤其是在大规模的工程中,及时的从内存中清除不必要的元件,这个是非常重要的,可千万不要忽视。

 

    2. hasEventListener 和 willTrigger

    发觉网上很多的说明文件,都是直接照搬帮助文件,真想不通这样的文章有什么用。题外话,有感而发而已,下面进入正题。

    按照惯例,我还是举个例子来说明,舞台布置如下图(很熟悉吧,哈哈,我都是这样测试的)

    常用事件方法及技巧(八) -- EventDispatcher类

    添入代码如下:

    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自带了那么多方法和事件,大多数情况,都足够用了。

    这篇文章,我先不具体介绍这个方法的使用实例了。相关文章,我会单独再写一篇博文的。










本文转自 windtoto 51CTO博客,原文链接:http://blog.51cto.com/windtoto/381070,如需转载请自行联系原作者