2016-07-13 4 views
-1

任意の数のパラメータを関数に渡すにはどうすればよいですか?任意の数のパラメータをAS3の関数に渡す

(Stringから)未知の関数を呼び出すときに、その関数にパラメータを渡したいと思います。パラメータは配列に格納されます。

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

arrには任意の数の要素を入れることができます。関数内には任意の数のパラメータを入れることができ、その数はお互いに異なる可能性があります。

これまでのところ私は、関数を呼び出すために、これを行ってきた:

this[functionName](parameter); 

しかし、これは一つのパラメータが可能になります。どのくらいの数が必要なのかに関わらず、どのようにしてそれらのすべてを入手するのですか?

編集:明確にするために、私は同じ方法で関数にアクセスしたいと思いますが、いくつのパラメータがあるかもわかりません。私は未知の関数にパラメータの配列をダンプしたい。私は関数がいくつのパラメータを持っているのかよく分かりません、そして、私は一般的に配列の長さが関数内のパラメータの数と等しいと仮定しています(エラーがうまくいかない場合はスローされます)。

+2

可能な重複: //stackoverflow.com/questions/1914648/accept-multiple-arguments-in-an-as3-method) – akmozo

+0

配列をパラメータとして使用しますか? –

+0

私はすべての私の関数でパラメータとして配列を使いたくない。おそらく何十もの機能にアクセスするつもりだし、配列を使うのは私が泥沼になってしまいたくない醜いハックだ。 –

答えて

1

この目的を達成するには、Function#apply()メソッドを使用します。ご例えば

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

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}); 
[AS3の方法で複数の引数を受け入れる](HTTPの
関連する問題