Actionscript 3 AS3-在带有参数的functionClassB中执行functionClassA.call()

Actionscript 3 AS3-在带有参数的functionClassB中执行functionClassA.call(),actionscript-3,function,Actionscript 3,Function,我读到: 但这并不完全符合我想要做的,我也找不到正确的解决方案。不过,我的问题并不复杂 情况如下: mains.as包含一个functionAstrParam:String onlineClass.as包含一个函数B,其工作方式如下: private static functionB (fnParam:Function):void //my fnParam is functionA { var strParam:String = getSomeStringResult(); /

我读到: 但这并不完全符合我想要做的,我也找不到正确的解决方案。不过,我的问题并不复杂

情况如下:

mains.as包含一个functionAstrParam:String

onlineClass.as包含一个函数B,其工作方式如下:

private static functionB (fnParam:Function):void //my fnParam is functionA
{
    var strParam:String = getSomeStringResult(); 
    //I have a result from a function

    fnParam.call(strParam); 
    //I want to execute functionA with strParam as parameter
}
但我不明白我和呼叫参数有什么关系。 我试过:

fnParam.call(null, strParam);
但它返回一个错误: [Fault]exception,information=TypeError:错误1009:无法访问null对象引用的属性或方法

我确信答案已经存在于某个地方,但是一个带有函数和调用的搜索不会带来任何结果


谢谢你的帮助

如果一个参数是一个函数,那么如果它被传递给另一个函数,您可以直接调用它作为参数名:

functionB(fnParam:Function){
    fnParam('strParam');
}

这里的问题看起来像是函数在传递给functionB时为null。这可能是因为它们位于不同的文件/类中,但您可能希望在调用functionB之前进行调试,以确保functionA是可访问的。

好的,我让代码正常工作,我认为这可能是一个静态故事。FunctionA不是静态的,当我将其作为静态FunctionB的参数传递时,它可以工作:

private static var functionACallback:Function;

public static functionB( functionA:Function ):void
{
    functionACallback = functionA; //set the static functionACallback
    var strParam = getSomeStringResult(); //get the string
    functionACallback(strParam); //call the static var with parameter
}
我不完全理解这里的问题,但是上面的代码解决了这个问题


我的回答很有帮助

如果functionB的唯一参数是fnParam,并且您正在传递functionA,那么您从何处获取strParam?strParam来自functionB执行,我在这里没有开发。我需要将在执行functionB时得到的strParam传递给functionA。我应该把我的帖子编辑得更清楚些吗?谢谢你的回答。我在尝试您的解决方案时仍然存在相同的错误,因此function可以为null。但是,当我让代码在没有字符串参数fnParam.call的情况下工作时,它工作得很好。这就是我不理解错误的原因。从您的示例来看,在调用fnParam.call时添加一个断点可能是值得的,以确保strParam具有您期望的值。尽管我确信即使使用空值,它也应该调用fine函数,但是检查getSomeStringResult的返回值是否没有引起问题可能是值得的。此时您还可以看到fnParam变量是否确实是一个函数而不是null。