Actionscript 3 AS3-在带有参数的functionClassB中执行functionClassA.call()
我读到: 但这并不完全符合我想要做的,我也找不到正确的解决方案。不过,我的问题并不复杂 情况如下: mains.as包含一个functionAstrParam:String onlineClass.as包含一个函数B,其工作方式如下: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(); /
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。