| パッケージ | mx.core |
| public class ClassFactory | |
| 継承 | ClassFactory Object |
| Implements | IFactory |
ファクトリオブジェクトを作成するときには、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 コントロールは itemRenderer の newInstance() メソッドを呼び出し、ProductRenderer の個々のインスタンスを作成します。各インスタンスの showProductImage プロパティは true に設定されます。製品の画像を除外した別の List コントロールが必要な場合は、ProductRenderer クラスを使用して、properties プロパティを { showProductImage: false } に設定した別の ClassFactory を作成します。
properties プロパティを使用してインスタンスを設定する方法は、1 つのジェネレータクラスをさまざまな方法で使用できるため、非常に有効です。ただし、通常はプロパティを設定する必要のない非設定ジェネレータクラスを作成します。そのため、MXML では次のシンタックスを使用できます。
<mx:List id="myList" itemRenderer="ProductRenderer">
MXML コンパイラが自動的に ClassFactory インスタンスを作成します。
関連項目
| プロパティ | 定義 | ||
|---|---|---|---|
![]() | constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
| Object | |
| generator : Class
このファクトリオブジェクトからオブジェクトを作成するために、
newInstance() メソッドが使用するクラスです。 | ClassFactory | ||
| properties : Object = null
このオブジェクトの名前と値のペアによって指定されるプロパティが、
newInstance() メソッドによって作成される各オブジェクトに設定されます。 | ClassFactory | ||
![]() | prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | |
| メソッド | 定義 | ||
|---|---|---|---|
|
ClassFactory(generator:Class = null)
コンストラクタです。
| ClassFactory | ||
![]() |
指定されたプロパティがオブジェクトに定義されているかどうかを示します。
| Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
|
newInstance():*
properties に指定されたプロパティを使用して、generator クラスの新しいインスタンスを作成します。 | ClassFactory | ||
![]() |
指定されたプロパティが存在し、列挙できるかどうかを示します。
| Object | |
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。
| Object | |
| generator | プロパティ |
public var generator:Class
このファクトリオブジェクトからオブジェクトを作成するために、newInstance() メソッドが使用するクラスです。
| properties | プロパティ |
public var properties:Object = null
このオブジェクトの名前と値のペアによって指定されるプロパティが、newInstance() メソッドによって作成される各オブジェクトに設定されます。
たとえば、properties を { text: "Hello", width: 100 } に設定すると、newInstance() を呼び出すことによって作成される generator クラスのすべてのインスタンスで、text が "Hello" に、width が 100 に設定されます。
デフォルト値ヌル (null).
| ClassFactory | () | コンストラクタ |
public 関数 ClassFactory(generator:Class = null)コンストラクタです。
パラメータgenerator:Class (default = null) — このファクトリオブジェクトからオブジェクトを作成するために、newInstance() メソッドが使用するクラスです。
|
| newInstance | () | メソッド |
public function newInstance():*
properties に指定されたプロパティを使用して、generator クラスの新しいインスタンスを作成します。
このメソッドによって、IFactory インターフェイスの newInstance() メソッドが実装されます。
* — 作成された新しいインスタンスです。
|