AS3带参数的调用方法,应该如何注销掉removeEventListener

问题:

在使用AS3中给相关事件绑定相关代码时候 我们一般使用
file.addEventListener(Event.COMPLETE,completeHandler);
其中completeHandler为事件触发调用的函数名称
但实际需求中更多不仅是要在事件发生时执行函数,也需要对该函数传递相关参数
file.addEventListener(Event.COMPLETE,
                    function(e:Event){
                        completeHandler(e,参数)
                    },false,0,true
                );

一般取消方式
file.removeEventListener(Event.COMPLETE, completeHandler);
这样就能按需要把对象的文件上载完成事件注销掉
按上面带参数的调用方法,应该如何取消,至少我写成
file.removeEventListener(Event.COMPLETE, completeHandler);
或者
file.removeEventListener(Event.COMPLETE, function(e:Event){
                        completeHandler(e,参数)
                     ;});
都无法达到注销事件的目的

解决方案:

利用arguments的关键字callee   

返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。[function.]arguments.callee可选项 function参数是当前正在执行的 Function对象的名称。说明callee属性的初始值就是正被执行的 Function 对象。callee属性是 arguments 对象的一个成员,它表示对函数对象本身的引用。

添加监听:

file.addEventListener(Event.COMPLETE,
                    function(e:Event){
                        completeHandler(e,btnId,arguments.callee)
                    },false,0,true
                );

  public var completef:Function;    //用于存放需要被remove的函数对象  

 private function completeHandler(event:Event,btnId:String="bzfw",callee:Function=null):void{
                
                 completef=callee;// 带清理函数

。。。。。。

}

注销事件:

    var bool:Boolean = file.hasEventListener(Event.COMPLETE);
                            if (bool)
                               file.removeEventListener(Event.COMPLETE, completef); 

转载于:https://my.oschina.net/060613/blog/864746

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值