AS3,比较两个功能

时间:2012-09-27 10:58:45

标签: actionscript-3

This question没有帮助。

我正在将函数推送到一个数组,该数组是一个回调列表,我可能想删除一个特定的函数。

我希望能够遍历数组并删除特定的功能。像这样:

    public function clearCallback(callName:String = null, callback:Function = null) :void{
        if(callName == null){
            //remove all callbacks
            this.callbackFuncs = {};
        }
        else if(this.callbackFuncs.hasOwnProperty(callName)){
            if(callback == null){
                //remove all callbacks for this API call
                this.callbackFuncs[callName] = [];
            }
            else{
                //remove specific callback function
                for(var i:Number = 0, iLen:Number = (this.callbackFuncs[callName] as Array).length; i < iLen; i ++){
                    if(this.callbackFuncs[callName][i] == callback){
                        this.callbackFuncs[callName][i] = null;
                    }
                }
            }
        }
    }

我评论//remove specific callback function时遇到了麻烦,我该如何比较两个函数?

在上面的代码中,callName不是函数名,它是回调注册到的API调用的名称。

1 个答案:

答案 0 :(得分:2)

您没有删除您只是将其设置为null的回调,尝试类似以下内容:

public function clearCallback(callName:String = null, callback:Function = null) :void{
    if(callName == null){
        //remove all callbacks
        this.callbackFuncs = {};
    }
    else if(this.callbackFuncs.hasOwnProperty(callName)){
        if(callback == null){
            //remove all callbacks for this API call
            this.callbackFuncs[callName] = [];
        }
        else{
            //remove specific callback function
            for(var i:Number = (this.callbackFuncs[callName] as Array).length-1; i >=0; i --){
                if(this.callbackFuncs[callName][i] == callback){
                    this.callbackFuncs[callName].splice(i,1);
                }
            }
        }
    }
}

希望有所帮助。