您的位置:首页 > 其它

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

2017-03-22 00:00 274 查看

问题:

在使用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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐