パッケージmx.core
public class ClassFactory
継承ClassFactory Inheritance Object
実装IFactory

ClassFactory インスタンスは、同じプロパティを持つ別のクラスのインスタンスを作成するために Flex が使用する「ファクトリオブジェクト」です。

ファクトリオブジェクトを作成するときには、generator クラスを指定します。次に、ファクトリオブジェクトに properties プロパティを設定します。Flex はファクトリオブジェクトを使用し、ファクトリオブジェクト の newInstance() メソッドを呼び出すことによってインスタンスを作成します。

newInstance() メソッドは、generator クラスの新しいインスタンスを作成し、そのインスタンスの properties に指定されたプロパティを設定します。作成されたインスタンスをさらにカスタマイズする必要がある場合は、newInstance() メソッドをオーバーライドできます。

ClassFactory クラスは IFactory インターフェイスを実装します。したがって、List コントロールの itemRenderer プロパティや DataGrid コントロールの itemEditor プロパティのように、IFactory 型のプロパティに割り当てることが可能なオブジェクトを作成できます。

たとえば、true または false を設定できる showProductImage プロパティを含む ProductRenderer という名前のアイテムレンダラークラスを作成するものとします。List コントロールがこのレンダラーを使用し、各レンダラーインスタンスで製品の画像を表示するようにしたい場合は、次のようなコードを作成します。

var productRenderer:ClassFactory = new ClassFactory(ProductRenderer);
productRenderer.properties = { showProductImage:true };
myList.itemRenderer = productRenderer;

List コントロールは itemRenderernewInstance() メソッドを呼び出し、ProductRenderer の個々のインスタンスを作成します。各インスタンスの showProductImage プロパティは true に設定されます。製品の画像を除外した別の List コントロールが必要な場合は、ProductRenderer クラスを使用して、properties プロパティを { showProductImage: false } に設定した別の ClassFactory を作成します。

properties プロパティを使用してインスタンスを設定する方法は、1 つのジェネレータクラスをさまざまな方法で使用できるため、非常に有効です。ただし、通常はプロパティを設定する必要のない非設定ジェネレータクラスを作成します。そのため、MXML では次のシンタックスを使用できます。

<mx:List id="myList" itemRenderer="ProductRenderer">

MXML コンパイラが自動的に ClassFactory インスタンスを作成します。

関連項目

mx.core.IFactory
mx.controls.List


パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  generator : Class
このファクトリオブジェクトからオブジェクトを作成するために、newInstance() メソッドが使用するクラスです。
ClassFactory
  properties : Object = null
このオブジェクトの名前と値のペアによって指定されるプロパティが、newInstance() メソッドによって作成される各オブジェクトに設定されます。
ClassFactory
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義
  ClassFactory(generator:Class = null)
コンストラクタ。
ClassFactory
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  newInstance():*
properties に指定されたプロパティを使用して、generator クラスの新しいインスタンスを作成します。
ClassFactory
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
プロパティの詳細
generatorプロパティ
public var generator:Class

このファクトリオブジェクトからオブジェクトを作成するために、newInstance() メソッドが使用するクラスです。

propertiesプロパティ 
public var properties:Object = null

このオブジェクトの名前と値のペアによって指定されるプロパティが、newInstance() メソッドによって作成される各オブジェクトに設定されます。

たとえば、properties{ text: "Hello", width: 100 } に設定すると、newInstance() を呼び出すことによって作成される generator クラスのすべてのインスタンスで、text"Hello" に、width100 に設定されます。

デフォルト値null.

コンストラクタの詳細
ClassFactory()コンストラクタ
public 関数 ClassFactory(generator:Class = null)

コンストラクタ。

パラメータ
generator:Class (default = null) — このファクトリオブジェクトからオブジェクトを作成するために、newInstance() メソッドが使用するクラスです。
メソッドの詳細
newInstance()メソッド
public function newInstance():*

properties に指定されたプロパティを使用して、generator クラスの新しいインスタンスを作成します。

このメソッドによって、IFactory インターフェイスの newInstance() メソッドが実装されます。

戻り値
* — 作成された新しいインスタンスです。