Flash CS3 ドキュメンテーション |
|||
| ActionScript 3.0 のプログラミング > ActionScript 言語とシンタックス > 関数 > オブジェクトとしての関数 | |||
ActionScript 3.0 の関数はオブジェクトです。関数を作成する場合、パラメータとして別の関数に渡すことができるオブジェクトを作成するだけではなく、プロパティとメソッドも関連付けることができます。
パラメータとして別の関数に渡される関数は、値渡しではなく、参照渡しによって渡されます。関数をパラメータとして渡す場合、識別子のみを使用し、メソッドを呼び出すために使用する括弧は使用しません。たとえば、次のコードは、addEventListener() メソッドへのパラメータとして clickListener() という関数を渡します。
addEventListener(MouseEvent.CLICK, clickListener);
Array.sort() メソッドは、関数を受け入れるパラメータも定義します。Array.sort() 関数の引数として使用されるカスタムソート関数の例については、配列のソートを参照してください。
ActionScript を初めて使用するプログラマには奇妙に思えるかもしれませんが、他のオブジェクトと同様に関数にプロパティおよびメソッドを含めることができます。実際には、どの関数にも、その関数用に定義されたパラメータの数を格納する length という読み取り専用プロパティがあります。これは、関数に渡されたパラメータの数を報告する arguments.length プロパティとは異なります。ActionScript では、関数に渡されたパラメータの数がその関数用に定義されたパラメータの数を上回ってもかまいません。次の例では、strict モードでは渡されたパラメータの数と定義されたパラメータの数が完全に一致する必要があるので、standard モードでのみコンパイルされています。この例は 2 つのプロパティの違いを示します。
function traceLength(x:uint, y:uint):void
{
trace("arguments received: " + arguments.length);
trace("arguments expected: " + traceLength.length);
}
traceLength(3, 5, 7, 11);
/* 出力 :
受け取ったパラメータ : 4
必要なパラメータ : 2 */
独自の関数プロパティを定義するには、関数本体の外側で定義します。関数プロパティは、関数に関連する変数の状態を保存できる準静的なプロパティになります。たとえば、特定の関数が呼び出される回数を追跡するとします。ゲームを記述していて、ユーザーが特定のコマンドを使用する回数を追跡する場合に、こうした機能は便利ですが、この場合静的クラスプロパティを使用することもできます。次のコードは、関数宣言の外部に関数プロパティを作成し、関数が呼び出されるたびにプロパティをインクリメントします。
someFunction.counter = 0;
function someFunction():void
{
someFunction.counter++;
}
someFunction();
someFunction();
trace(someFunction.counter); // 2
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000056.html