ActionScript3(AS3)类库学习之(五)——EventDispatcher事件分发和监听

EventDispatcher类是处理Event事件的一个重要的基类,通过继承这个类或者实现IEventDispatcher接口,我们才能实现事件的分发和监听。

一.自定义消息处理类
1.通过继承EventDispatcher类来使用该类中消息处理的方法。这个方法最简单


2.如果我们自定义的类需要继承自别的类,那么我们就需要通过实现IEventDispatcher接口来实现自己的消息处理类,如下例:

class MyDispatcher implements IEventDispatcher {       
    private var dispatcher:EventDispatcher;
               
    public function MyDispatcher() {
        dispatcher = new EventDispatcher(this);
    }
           
    public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{
        dispatcher.addEventListener(type, listener, useCapture, priority);
    }
           
    public function dispatchEvent(evt:Event):Boolean{
        return dispatcher.dispatchEvent(evt);
    }
    
    public function hasEventListener(type:String):Boolean{
        return dispatcher.hasEventListener(type);
    }
    
    public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void{
        dispatcher.removeEventListener(type, listener, useCapture);
    }
                   
    public function willTrigger(type:String):Boolean {
        return dispatcher.willTrigger(type);
    }
}



二.消息的分发和监听
1.EventDispatcher类使用dispatchEvent()函数来分发消息。


2.使用addEventListener来增加监听者,需要注意的useCapture的值默认为false,这时只监听Targeting,Bubbling阶段的消息,当它为true时只能监听Capturing阶段的消息,如果想要三个阶段的消息都进行监听,则需要addEventListener两次。


3.使用addEventListener来增加监听者,对于同一类型,同一阶段,同一目标对象的消息,同一监听函数只能添加一次,多次添加不起作用。


4.在使用addEventListener增加监听者时,可以用priority参数确定监听函数执行的顺序,值越大,优先级越高。


5.在不需要监听者时,需要调用removeEventListener()函数来取消监听,否则只要事件存在,AS3就不会自动释放内存,除非将参数useWeakReference设为true。


6.在调用removeEventListener()函数时,事件的类型和useCapture参数一定要和addEventListener相对应。

三.判别是否监听者是否存在
EventDispatcher类有两个函数来判断监听者的存在性。
1.hasEventListener:判断当前EventDispatcher对象是否存在指定类型的监听器,该监听器需要是注册在当前EventDispatcher对象上,和它的上级对象是否有注册该监听器无关


2.willTrigger:顾名思义,是指若目标对象是否能触发指定类型的监听器,这时,该监听器注册在当前EventDispatcher对象或是其上级对象上的话都能被触发。

转载于:https://www.cnblogs.com/studynote/archive/2013/04/03/2994362.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值