2016-07-13 3 views
-1

Как передать произвольное количество параметров функции?Передача произвольного числа параметров функции в AS3

При вызове неизвестной функции (из строки) я хочу передать параметры этой функции. Параметры сохраняются в массиве:

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

Там может быть любое количество элементов в arr. В функции также может быть любое количество параметров, и числа могут отличаться друг от друга.

До сих пор я делал это, чтобы вызвать функцию:

this[functionName](parameter); 

Но это позволяет только один параметр. Как я могу получить их все, независимо от того, сколько из них требуется?

Редактировать: Чтобы быть ясным, я хочу получить доступ к функции таким же образом, но я не знаю, сколько параметров оно может иметь. Я хочу сбросить массив параметров в неизвестную функцию. Я не уверен, сколько параметров имеет функция, и я обычно предполагаю, что длина массива равна количеству параметров в функции (ошибка будет выброшена, если что-то пойдет не так, и это нормально).

+2

Возможный дубликат [Accept несколько аргументов в методе AS3] (HTTP: //stackoverflow.com/questions/1914648/accept-multiple-arguments-in-an-as3-method) – akmozo

+0

Использовать массив как параметр? –

+0

Я не хочу использовать массив как параметр во всех моих функциях. Я собираюсь получить доступ к возможностям десятков функций, и использование массива - уродливый хак, который я не хочу увязнуть. –

ответ

0

Другой метод, который может сделать трюк заключается в следующем:

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}); 
Смежные вопросы