パッケージトップレベル
public dynamic class Function
継承Function Inheritance Object

関数は、ActionScript で呼び出すことのできるコードの基本単位です。ActionScript のユーザー定義関数とビルトイン関数は、どちらも Function クラスのインスタンスである Function オブジェクトで表されます。

クラスのメソッドは、Function オブジェクトとは少し異なります。メソッドは通常の関数オブジェクトとは異なり、関連のクラスオブジェクトと緊密にリンクされています。このため、メソッドまたはプロパティは、同一クラスのすべてのインスタンスで共有される定義を持ちます。メソッドをインスタンスから抽出して、"バインド" メソッドとして扱うことができます。元のインスタンスとのリンクは維持されます。バインドメソッドについては、this キーワードで、メソッドの実装元オブジェクトを指します。関数については、this で、関数が呼び出されたときの関連オブジェクトを指します。

例の表示

関連項目

メソッド


パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義
  apply(thisObject:Object, argArray:Array = null):void
ActionScript が呼び出す関数内で使用される thisObject の値を指定します。
Function
  call(thisObject:Object, parameter1:String = null):void
Function オブジェクトが表す関数を呼び出します。
Function
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
メソッドの詳細
apply()メソッド
AS3 function apply(thisObject:Object, argArray:Array = null):void

ActionScript が呼び出す関数内で使用される thisObject の値を指定します。このメソッドは、呼び出される関数に渡されるパラメータも指定します。apply() は Function クラスのメソッドなので、ActionScript 内のすべての Function オブジェクトのメソッドとしても使用できます。

パラメータは、カンマ区切りリストとしてパラメータを指定する Function.call() とは異なり、Array オブジェクトとして指定します。これは、スクリプトが実際に実行されるまで、渡されるパラメータ数が不明である場合にも便利です。

呼び出された関数が戻り値として指定する値を返します。

パラメータ
thisObject:Object — 関数の適用先のオブジェクトです。
 
argArray:Array (default = null) — エレメントをパラメータとして関数に渡す配列です。

関連項目

call()メソッド 
AS3 function call(thisObject:Object, parameter1:String = null):void

Function オブジェクトが表す関数を呼び出します。ActionScript のすべての関数は Function オブジェクトによって表されます。したがって、すべての関数はこのメソッドをサポートしています。

ほとんどの場合、このメソッドの代わりに関数呼び出し演算子 (()) を使用できます。関数呼び出し演算子を使うと、コードが簡潔になり読みやすくなります。このメソッドは、主に関数呼び出しの thisObject パラメータを明示的に制御する必要がある場合に役立ちます。通常、関数をオブジェクトのメソッドとして、関数の本体内で呼び出すと、次のように thisObjectmyObject に設定されます。

  myObject.myMethod(1, 2, 3);
  

thisObject が他の異なる場所をポイントするように設定する場合もあります。たとえば、オブジェクトのメソッドとして呼び出す関数が、実際には、そのオブジェクトのメソッドとして格納されていない場合などです。

  myObject.myMethod.call(myOtherObject, 1, 2, 3); 
  

関数をオブジェクトのメソッドとして呼び出さずに通常の関数として呼び出すには、thisObject パラメータに値 null を渡します。たとえば、次の 2 つの関数呼び出しは同じです。

  Math.sin(Math.PI / 4)
  Math.sin.call(null, Math.PI / 4)
  

呼び出された関数が戻り値として指定する値を返します。

パラメータ
thisObject:Object — 関数の本体内で thisObject の値を示すオブジェクトです。
 
parameter1:String (default = null) — 関数に渡すパラメータです。指定できるパラメータの数は 0 個以上です。

関連項目


次の例では、FunctionExampleSimpleCollectionEventBroadcaster、および EventListener クラスを使用して、 ActionScript での関数のさまざまな使用法を示しています。 これを行うには、以下の手順を実行します。
  1. FunctionExample のコンストラクタでは、 simpleColl という名前のローカル変数を作成し、この変数に 1 から 8.
  2. trace() を使用して、simpleColl オブジェクトを出力します。
  3. EventListener オブジェクト listenersimpleColl に追加します。
  4. insert() 関数と remove() 関数が呼び出されると、リスナーは それぞれのイベントに応答します。
  5. greaterThanFourColl という名前の 2 番目の SimpleCollection オブジェクトを作成します。
  6. greaterThanFourColl オブジェクトには、引数 4 を使用した simpleColl.select() の結果が割り当てられます。SimpleCollection オブジェクトの select メソッドは、 匿名関数パラメータをブロックとして使用する内部イテレータです。
package {
    import flash.display.Sprite;
    
    public class FunctionExample extends Sprite {
        public function FunctionExample() {
            var simpleColl:SimpleCollection;
            simpleColl = new SimpleCollection(0, 1, 2, 3, 4, 5, 6, 7, 8);
            trace(simpleColl);        // 0, 1, 2, 3, 4, 5, 6, 7, 8

            var listener:EventListener = new EventListener();
            simpleColl.addListener(listener);
            simpleColl.insert(9);        // itemInsertedHandler: 9
            simpleColl.remove(8);        // itemRemovedHandler: 8
            trace(simpleColl);        // 0, 1, 2, 3, 4, 5, 6, 7, 9

            var greaterThanFourColl:SimpleCollection;
            greaterThanFourColl = simpleColl.select(4, function(item:int, value:int){ return item > value });
            trace(greaterThanFourColl);    // 5, 6, 7, 9
        }
    }
}
    
import flash.display.Sprite;
    
class EventBroadcaster {
    private var listeners:Array;

    public function EventBroadcaster() {
        listeners = new Array();
    }
        
    public function addListener(obj:Object):void {
        removeListener(obj);
        listeners.push(obj);
    }
        
    public function removeListener(obj:Object):void {
        for(var i:uint = 0; i < listeners.length; i++) {
            if(listeners[i] == obj) {
                listeners.splice(i, 1);
            }
        }
    }
    
    public function broadcastEvent(evnt:String, ...args):void {
        for(var i:uint = 0; i < listeners.length; i++) {
            listeners[i][evnt].apply(listeners[i], args);
        }
    }    
}
    
class SimpleCollection extends EventBroadcaster {
    private var arr:Array;
        public function SimpleCollection(... args) {
        arr = (args.length == 1 && !isNaN(args[0])) ? new Array(args[0]) : args;
    }
        
    public function insert(obj:Object):void {
        remove(obj);
        arr.push(obj);
        broadcastEvent("itemInsertedHandler", obj);
    }
        
    public function remove(obj:Object):void {
        for(var i:uint = 0; i < arr.length; i++) {
            if(arr[i] == obj) {
                var obj:Object = arr.splice(i, 1)[0];
                broadcastEvent("itemRemovedHandler", obj);
            }
        }
    }

    public function select(val:int, fn:Function):SimpleCollection {
        var col:SimpleCollection = new SimpleCollection();
        for(var i:uint = 0; i < arr.length; i++) {
            if(fn.call(this, arr[i], val)) {
                col.insert(arr[i]);
            }
        }
        return col;
    }
        
    public function toString():String {
        var str:String = new String();
        for(var i:uint = 0; i < arr.length - 1; i++) {
            str += arr[i] + ", ";
        }
        str += arr[arr.length - 1];
        return str;
    }
}

class EventListener {
    public function EventListener() {
    }
    
    public function itemInsertedHandler(obj:Object):void {
        trace("itemInsertedHandler: " + obj);
    }
    
    public function itemRemovedHandler(obj:Object):void {
        trace("itemRemovedHandler: " + obj);        
    }
}




 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/2_jp/langref/Function.html