パッケージ | mx.core |
クラス | public class ClassFactory |
継承 | ClassFactory Object |
実装 | IFactory |
サブクラス | ButtonBarButtonClassFactory, ContextualClassFactory |
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
ファクトリオブジェクトを作成するときには、generator
クラスを指定します。 次に、ファクトリオブジェクトに properties
プロパティを設定します。 Flex はファクトリオブジェクトを使用し、ファクトリオブジェクト の newInstance()
メソッドを呼び出すことによってインスタンスを作成します。
newInstance()
メソッドは、generator
クラスの新しいインスタンスを作成し、そのインスタンスの properties
に指定されたプロパティを設定します。 作成されたインスタンスをさらにカスタマイズする必要がある場合は、newInstance()
メソッドをオーバーライドできます。
ClassFactory クラスは IFactory インターフェイスを実装します。 したがって、List コントロールの itemRenderer
プロパティや DataGrid コントロールの itemEditor
プロパティのように、IFactory 型のプロパティに代入できるオブジェクトを作成できます。
例えば、ProductRenderer という名前のアイテムレンダラークラスを作成し、その showProductImage
プロパティを true
または false
に設定できるとします。 List コントロールでこのレンダラーを使用し、各レンダラーインスタンスで製品の画像を表示する場合は、次のようなコードを作成します。
var productRenderer:ClassFactory = new ClassFactory(ProductRenderer); productRenderer.properties = { showProductImage: true }; myList.itemRenderer = productRenderer;
List コントロールは、newInstance()
メソッドを itemRenderer
で呼び出し、ProductRenderer の個々のインスタンスを作成します。各インスタンスの showProductImage
プロパティは true
に設定されます。 製品の画像を除外した別のコントロールが必要な場合は、ProductRenderer クラスを使用して、properties
プロパティを { showProductImage: false }
に設定した別の ClassFactory を作成します。
properties
プロパティを使用してインスタンスを設定する方法は、1 つのジェネレータークラスを様々な方法で使用できるため便利です。 ただし、通常はプロパティを設定する必要のない非設定ジェネレータークラスを作成します。 そのため、MXML では次のシンタックスを使用できます。
<mx:List id="myList" itemRenderer="ProductRenderer">
MXML コンパイラーが自動的に ClassFactory インスタンスを作成します。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
generator : Class
このファクトリオブジェクトからオブジェクトを作成するために、newInstance() メソッドが使用するクラスです。 | ClassFactory | ||
properties : Object = null
このオブジェクトの名前と値のペアによって指定されるプロパティが、newInstance() メソッドによって作成される各オブジェクトに設定されます。 | ClassFactory |
メソッド | 定義元 | ||
---|---|---|---|
ClassFactory(generator:Class = null)
コンストラクターです。 | ClassFactory | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
newInstance():*
properties に指定されたプロパティを使用して、generator クラスの新しいインスタンスを作成します。 | ClassFactory | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
generator | プロパティ |
public var generator:Class
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
このファクトリオブジェクトからオブジェクトを作成するために、newInstance()
メソッドが使用するクラスです。
properties | プロパティ |
public var properties:Object = null
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
このオブジェクトの名前と値のペアによって指定されるプロパティが、newInstance()
メソッドによって作成される各オブジェクトに設定されます。
例えば、properties
を { text: "Hello", width: 100 }
に設定した場合、generator
クラスの各インスタンス(newInstance()
を呼び出して作成したもの)は、text
が "Hello"
に設定され、width
が 100
に設定されます。
デフォルト値: null。
ClassFactory | () | コンストラクター |
newInstance | () | メソッド |
Tue Jun 12 2018, 10:34 AM Z