ActionScriptに限らず,プログラミングで関数を使用する際に知っておくと便利な仕組みが「引数」と「戻り値」です。引数と戻り値を組み合わせることで,関数で処理する内容をコントロールできるようになります。

引数と戻り値を使ってインスタンスを表示

 図1のムービーは,引数を使って渡した情報を元に計算を行い,戻り値として計算の結果を返す関数を利用したムービーです。

図1:引数と戻り値を利用したムービー(クリックするとムービーを表示します)

 二つの仕組みを利用すると,関数で実行できる処理の幅を広げたり,余分な変数の使用を減少させたりと,関数をより便利に使用できるようになります。

引数の仕組み

 まずは「引数」の仕組みをご紹介します。「引数」とは,関数を実行するにあたり,「この情報を元に処理を行ってください」と,必要な情報(パラメータ)を関数に渡すための仕組みです(*1)。

 例えば,「画面上に配置してあるインスタンスを動かす」ための関数「move」を作成するとします。この関数は,ステージ上のインスタンスを動かすための処理としたいのですが,そのためには,「どのパネルを動かすのか」「どこに動かすのか」という情報が必要となってきますよね。このような場合には,引数を使った処理が便利です。

 関数で引数を受け取るには,

function 引数名(引数1, 引数2...){
  //引数を使った処理
}

というように処理を記述します。関数名の後ろの括弧内には,任意の名前で,任意の数の引数を記述しておきます。

 このように引数を設定した関数を,

関数名(渡したい値1, 渡したい値2);

のようにして呼び出すと,関数に必要な情報を渡すことができます。

 こうして関数に渡された引数は,関数内では変数のように,その引数名を使って扱うことができます。先ほどの関数「move」を例にとってみると,

function move(mc, posX, posY){
  //引数の名前を使って,渡された値にアクセス
  trace("操作の対象は," + mc.name);
  trace("新しいx座標は," + posX);
  trace("新しいy座標は," + posY);
  //引数を変数のように使って処理を実行
  mc.x = posX;
  mc.y = posY;
}

のように関数moveを,三つの引数を持つ関数として作成できます。例えば,ステージ上に二つのインスタンス「apple」と「lemon」があるとき,この関数moveを使用してそれぞれのインスタンスを移動するには,

move(apple, 30, 100);
move(lemon, 50, 50);

のように,「移動させたい対象」「移動させたいx座標」「移動させたいy座標」の三つの情報を関数moveに渡して実行できます(図2)。実際に実行してみると,きちんと引数によって値が渡されていることが確認できますね。

図2:関数を使った処理の例(クリックするとムービーを表示します)

 引数を準備する際には,変数の宣言時と同じように,データ型を指定することもできます。

function setPanel(mc:MovieClip, posX:Number, posY:Number){
  //処理;
}