将任意数量的参数传递给 AS3 中的函数
Passing arbitrary number of parameters to a function in AS3
如何将任意数量的参数传递给函数?
当调用未知函数(从字符串)时,我想将参数传递给该函数。参数存储在数组中:
var arr:Array = ["param1","param2"];
arr
中可以有任意数量的元素。函数中也可以有任意数量的参数,并且数量可以互不相同。
到目前为止,我一直这样做是为了调用函数:
this[functionName](parameter);
但这只允许一个参数。无论需要多少,我如何才能将它们全部放入?
编辑:明确地说,我想以相同的方式访问函数,但我不知道它可能有多少个参数。我想将一组参数转储到一个未知函数中。我不确定函数有多少个参数,我通常假设数组的长度等于函数中的参数个数(如果出现任何问题都会抛出错误,这很好)。
要实现这一点,请使用 Function#apply()
方法。
以你的例子为例:
this[functionName].apply(null, arr);
另一种可能有效的方法是:
function myFunction(arg:String, arg2:String, ... args)
args
不是关键字。然后像这样调用函数:
myFunction("foo","bar","sink",12,);
我昨天才发现这个,并用它来传递动画的关键帧,如下所示:
function animateChar(o:Sprite, startFrame:int, rec:Rectangle, ...keyFrames):void
// loop like keyFrames is an Array
trace(keyFrames[i])
and called it like this:
animateChar(character,5,myRec,{f:3,t:2},{f:2,t:2},{f:1,t:2});
如何将任意数量的参数传递给函数?
当调用未知函数(从字符串)时,我想将参数传递给该函数。参数存储在数组中:
var arr:Array = ["param1","param2"];
arr
中可以有任意数量的元素。函数中也可以有任意数量的参数,并且数量可以互不相同。
到目前为止,我一直这样做是为了调用函数:
this[functionName](parameter);
但这只允许一个参数。无论需要多少,我如何才能将它们全部放入?
编辑:明确地说,我想以相同的方式访问函数,但我不知道它可能有多少个参数。我想将一组参数转储到一个未知函数中。我不确定函数有多少个参数,我通常假设数组的长度等于函数中的参数个数(如果出现任何问题都会抛出错误,这很好)。
要实现这一点,请使用 Function#apply()
方法。
以你的例子为例:
this[functionName].apply(null, arr);
另一种可能有效的方法是:
function myFunction(arg:String, arg2:String, ... args)
args
不是关键字。然后像这样调用函数:
myFunction("foo","bar","sink",12,);
我昨天才发现这个,并用它来传递动画的关键帧,如下所示:
function animateChar(o:Sprite, startFrame:int, rec:Rectangle, ...keyFrames):void
// loop like keyFrames is an Array
trace(keyFrames[i])
and called it like this:
animateChar(character,5,myRec,{f:3,t:2},{f:2,t:2},{f:1,t:2});