(section01-03 フレームアクションのメソッド定義と関数定義から抜粋)
メソッドに引数を渡すことができます。引数にはデータ型を指定できます。次のスクリプトは、動かすインスタンスと移動距離を引数で指定できるようにmoveXメソッドを変更したものです。
[:script:]動かすインスタンスと距離を引数で指定する
メソッドに引数が指定してある場合、メソッドを実行する際に引数と同数の値を渡す必要があります。引数の個数が一致しない場合はエラーになります。また、引数のデータ型が一致しない場合もエラーになります。たとえば、次のようなケースではエラーになります。
[:script:]引数が一致せずにエラーになるケース
引数の省略と初期値
メソッドの引数が省略されたときに初期値を指定することができます。引数に初期値を指定するには、「引数=初期値」のように指定します。次の例では引数a、bの初期値をそれぞれ1と10に設定しています。
[:script:]引数に初期値が設定してあるメソッド
[:script:]エラーになるケース
[:script:]第2引数のみ省略可能
次のように初期値を指定していない引数より前の引数に初期値を指定することはできません。
[:script:]前の変数の初期値だけ指定するとエラーになる
note「関数の引数の値渡しと参照渡し」も参照してください。
メソッドに引数を渡すことができます。引数にはデータ型を指定できます。次のスクリプトは、動かすインスタンスと移動距離を引数で指定できるようにmoveXメソッドを変更したものです。
[:script:]動かすインスタンスと距離を引数で指定する
//moveX()の定義 function moveX(mc:MovieClip, v:Number):void { mc.x = mc.x + v; } //moveX()を実行する moveX(my_mc1, 150); moveX(my_mc2, 200);このサンプルではmoveX()を2度実行しています。moveX(my_mc1, 150)ではmy_mc1を右へ150ピクセル移動させ、moveX(my_mc2, 200)ではmy_mc2を右へ200ピクセル移動させます。このように引数を使うことで同じような処理を1つのメソッドで実現できるようになります。
メソッドに引数が指定してある場合、メソッドを実行する際に引数と同数の値を渡す必要があります。引数の個数が一致しない場合はエラーになります。また、引数のデータ型が一致しない場合もエラーになります。たとえば、次のようなケースではエラーになります。
[:script:]引数が一致せずにエラーになるケース
//moveX()の定義 function moveX(mc:MovieClip, v:Number):void { mc.x = mc.x + v; } //エラーになるケース moveX(my_mc1);//引数の個数が合わない moveX(my_mc2, 200, 15);//引数の個数が合わない moveX("my_mc1", 200);//引数のデータ型が合わない
引数の省略と初期値
メソッドの引数が省略されたときに初期値を指定することができます。引数に初期値を指定するには、「引数=初期値」のように指定します。次の例では引数a、bの初期値をそれぞれ1と10に設定しています。
[:script:]引数に初期値が設定してあるメソッド
function ab(a:int=1, b:int=10):void { trace(a+b); } //引数による結果の違いのテスト ab();//出力:11 ab(5);//出力:15 ab(5,50);//出力:55引数を変えてテストした結果をみるとわかるように、初期値が設定してあれば引数の個数が不足してもエラーにはならず、省略した引数はその値に初期値が使用されます。 なお、引数に初期値が指定してあっても前の引数の値を省略することはできません。また、指定の引数の個数以上の引数を渡すとエラーになります。
[:script:]エラーになるケース
ab(, 30);//前の引数は省略できない ab(5,6,7);//引数の個数が多いメソッドを定義する場合、複数の引数があるとき引数の省略は後ろから可能です。次の例では第2引数にのみ初期値を指定しているので、第2引数のみ省略可能になります。
[:script:]第2引数のみ省略可能
function ab(a:int, b:int=10):void { trace(a+b); } //引数による結果の違いのテスト ab(5);//出力:15 ab(5,50);//出力:55
次のように初期値を指定していない引数より前の引数に初期値を指定することはできません。
[:script:]前の変数の初期値だけ指定するとエラーになる
function ab(a:int=1, b:int):void { trace(a+b); }
note「関数の引数の値渡しと参照渡し」も参照してください。