在AS3方法中接受多个参数

Rob*_*cks 4 flash methods arguments actionscript-3

如何在自定义方法中接受多个参数?喜欢:

Proxy(101, 2.02, "303");

function Proxy(args:Arguments){
    Task(args);
}

function Task(var1:int, var2:Number, var3:String){ 
    // work with vars
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 9

您将无法像在问题中那样直接传递args数组.你必须单独传递args数组的每个元素.

function Proxy(... args)
{
   // Simple with no error checking.
   Task(args[0], args[1], args[2]);
}
Run Code Online (Sandbox Code Playgroud)

UDATE

阅读其中一条评论之后,看起来你可以逃脱:

function Proxy(... args)
{
    // Simple with no error checking.
    Task.apply(null, args);

    // Call could also be Task.apply(this, args);
}
Run Code Online (Sandbox Code Playgroud)

小心点 apply()的性能明显慢于使用传统方法调用函数.

  • 这种方法似乎最正确.如果需要传递未知数量的参数,也可以在函数上使用apply方法._obj.methodName.apply(_obj,[arg1,arg2,arg3]); (2认同)

OXM*_*456 5

您也可以使用对象中的apply(thisArg:*, argArray:*):*方法Function

例:

包{

    public class Test{
          public function Test(){
              var a:Array=[1,"a"];
              callMe.apply(this,a);
          }       
          public function callMe(a:Number,b:String):void{
                trace(a,b);
          }
    }
}
Run Code Online (Sandbox Code Playgroud)