Примите несколько аргументов в методе AS3 - PullRequest
4 голосов
/ 16 декабря 2009

Как принять несколько аргументов в пользовательском методе? Как:

Proxy(101, 2.02, "303");

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

function Task(var1:int, var2:Number, var3:String){ 
    // work with vars
}

Ответы [ 2 ]

9 голосов
/ 16 декабря 2009

Вы не сможете просто пропустить массив args, как у вас в вопросе. Вам придется отдельно передавать каждый элемент массива args.

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

Udate

Прочитав один из комментариев, похоже, что вы можете сойти с рук:

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

    // Call could also be Task.apply(this, args);
}

Просто будь осторожен. Выполнение apply () значительно медленнее, чем вызов функции традиционным методом.

5 голосов
/ 16 декабря 2009

Вы также можете использовать метод 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);
          }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...