【问题标题】:Passing arbitrary number of parameters to a function in AS3将任意数量的参数传递给 AS3 中的函数
【发布时间】:2016-07-13 21:43:27
【问题描述】:

如何将任意数量的参数传递给函数?

当调用未知函数(从字符串)时,我想将参数传递给该函数。参数存储在一个数组中:

var arr:Array = ["param1","param2"];

arr 中可以有任意数量的元素。函数中也可以有任意数量的参数,并且数量可以不同。

到目前为止,我一直在这样做来调用函数:

this[functionName](parameter);

但这只允许一个参数。无论需要多少,我如何才能将它们全部加入?

编辑:明确地说,我想以相同的方式访问该函数,但我不知道它可能有多少个参数。我想将一组参数转储到一个未知函数中。我不确定函数有多少个参数,我通常假设数组的长度等于函数中的参数个数(如果出现任何问题会抛出错误,这很好)。

【问题讨论】:

  • 使用数组作为参数?
  • 我不想在我的所有函数中都使用数组作为参数。我可能要访问几十个函数,而使用数组是一个丑陋的黑客,我不想陷入困境。
  • @akmozo 是的,这是重复的。对于那个很抱歉。我确实认为我的更有意义,fsbmain 的正确答案是一个更简洁的答案

标签: function actionscript-3 flash parameters


【解决方案1】:

要实现这一点,请使用Function#apply() 方法。

你的例子:

this[functionName].apply(null, arr);

【讨论】:

    【解决方案2】:

    另一种可能解决问题的方法是:

    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});
    

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 2022-06-27
      • 2023-04-03
      • 2012-09-24
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多