引数と戻り値を使ってインスタンスを表示
図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){ //処理; }