パッケージ | mx.core |
クラス | public class ComponentDescriptor |
継承 | ComponentDescriptor Object |
サブクラス | UIComponentDescriptor |
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
MXML ファイル内のほとんどのタグは、UIComponent オブジェクトのツリーを記述するものです。 例えば、<mx:Application>
タグは UIComponent オブジェクトを表し、その子コンテナとコントロールもすべて UIComponent オブジェクトです。
MXML コンパイラーは、それぞれの MXML タグを UIComponentDescriptor インスタンスにコンパイルします。 厳密には、MXML コンパイラーは ActionScript データ構造を自動生成します。これは、UIComponentDescriptor オブジェクトのツリーになります。
実行時に、Container クラスの createComponentsFromDescriptors()
メソッドは、コンテナの childDescriptors
配列の UIComponentDescriptor オブジェクト内の情報を使用して、コンテナの子である実際の UIComponent オブジェクト、およびその下位要素を作成します。 コンテナの creationPolicy
プロパティの値によっては、アプリケーションの起動時にコンポーネントの一部が表示されるとき、またはアプリケーションの開発者が手動で createComponentsFromDescriptors()
メソッドを呼び出したときに、下位要素が作成されることがあります。
通常、ComponentDescriptor または UIComponentDescriptor インスタンスを自分で作成することはありません。Container クラスの childDescriptors
配列を経由して、MXML コンパイラーが自動生成したインスタンスにアクセスできます。
関連する API エレメント
mx.core.Container.childDescriptors
mx.core.Container.creationPolicy
mx.core.Container.createComponentsFromDescriptors()
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
document : Object
コンポーネントが作成されるドキュメントオブジェクトへの参照です。 | ComponentDescriptor | ||
events : Object
MXML に指定された、コンポーネントのイベントハンドラーの名前と値のペアを含むオブジェクトです。 | ComponentDescriptor | ||
id : String
MXML に指定されたコンポーネントの識別子です。 | ComponentDescriptor | ||
properties : Object [読み取り専用]
MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトです。 | ComponentDescriptor | ||
propertiesFactory : Function
MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトを返す関数です。 | ComponentDescriptor | ||
type : Class
MXML に指定されたコンポーネントのクラスです。 | ComponentDescriptor |
メソッド | 定義元 | ||
---|---|---|---|
ComponentDescriptor(descriptorProperties:Object)
コンストラクターです。 | ComponentDescriptor | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
キャッシュされた properties プロパティを無効化します。 | ComponentDescriptor | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
"ComponentDescriptor_" および id プロパティの値を含むストリングを返します。 | ComponentDescriptor | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
document | プロパティ |
public var document:Object
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
コンポーネントが作成されるドキュメントオブジェクトへの参照です。
関連する API エレメント
events | プロパティ |
public var events:Object
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
MXML に指定された、コンポーネントのイベントハンドラーの名前と値のペアを含むオブジェクトです。
例えば、次のようなコードを作成するとします。
<mx:DataGrid id="dg" initialize="fetchData(); initDataGrid();" change="changeHandler(event);"/>
この場合、記述子の events
プロパティは次のオブジェクトです。
{ initialize: "__dg_initialize", change: "__dg_change" }
コンポーネントに MXML イベントハンドラーが指定されていない場合、event
プロパティは null
になります。
ストリング "__dg_initialize"
および "__dg_change"
は、MXML コンパイラーが自動生成するイベントハンドラーメソッドの名前です。 これらのメソッドの本体には、イベント属性の値として指定された ActionScript ステートメントが入ります。 例えば、自動生成された initialize
ハンドラーは次のようになります。
public function __dg_initialize(event:mx.events.FlexEvent):void { fetchData(); initDataGrid(); }
自動生成されたイベントハンドラーが常に名前で指定されると想定しないでください。これは、Flex の将来のバージョンで変更される可能性があります。
Container の createComponentsFromDescriptors()
メソッドはこのプロパティを使用して、addEventListener()
メソッドにより自動生成されたイベントハンドラーを登録します。
id | プロパティ |
public var id:String
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
MXML に指定されたコンポーネントの識別子です。
例えば、次のようなコードを作成するとします。
<mx:TextInput id="firstName" text="Enter your first name here"/>
この場合、記述子の id
プロパティはストリング "firstName"
です。
コンポーネントに MXML ID が指定されていない場合、id
プロパティは null
になります。
id
プロパティの値は、MXML コンパイラーによって自動生成された MXML ドキュメントオブジェクトのパブリック変数の名前になります。 この変数の値は、この記述子から作成された UIComponent オブジェクトへの参照です。 これにより、例えば TextInput コントロールの text
プロパティを、この TextInput インスタンスを含むドキュメント内の任意の場所から firstName.text
として参照できます。
id
が指定されていて、空のストリングではない場合、それは DisplayObject オブジェクトの name
になります。 id
が指定されていないか空の場合、DisplayObject オブジェクトの name
は、"Button3"
のような自動生成されたストリングのままです。これは、NameUtil.createUniqueName()
メソッドから返されたものと同じです。 この name
は、toString()
メソッドから返されるストリングの生成に使用されます。 これを指定して getChildByName()
を呼び出すことにより、親からコンポーネントを見つけることもできます。
関連する API エレメント
properties | プロパティ |
properties:Object
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトです。
例えば、次のようなコードを作成するとします。
<mx:TextInput width="150" text="Hello"/>
この場合、記述子の properties
プロパティはこのオブジェクトです。
{ width: 150, text: "Hello" }
コンポーネントに MXML プロパティが指定されていない場合、properties
プロパティは null
になります。 この場合、コンポーネントはデフォルトのプロパティ値を使用します。
このオブジェクトは、propertiesFactory
プロパティに指定された関数を呼び出すことによって作成され、以降のアクセスのためにキャッシュされます。 ただし、Repeater が同じ記述子から複数のコンポーネントインスタンスを作成するときは、コンポーネントインスタンスごとに properties
オブジェクトの最新コピーを作成し、コンポーネントインスタンスが配列またはオブジェクト参照のプロパティ値を共有しないようにする必要があります。 Repeater は、記述子に対して invalidateProperties()
メソッドを呼び出すことによってこれを実現します。
実装
public function get properties():Object
関連する API エレメント
propertiesFactory | プロパティ |
public var propertiesFactory:Function
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトを返す関数です。
例えば、次のようなコードを作成するとします。
<mx:TextInput width="150" text="Hello">
この場合、記述子の propertiesFactory
プロパティは次の関数です。
function():Object { return { width: 150, text: "Hello" }; }
コンポーネントに MXML プロパティが指定されていない場合、propertiesFactory
プロパティは null
になります。 この場合、コンポーネントはデフォルトのプロパティ値を使用します。
propertyFactory
が実際のオブジェクトではなく、オブジェクトを返す関数であるのは、ComponentDescriptor オブジェクトのツリーを段階的に「展開」できるようにするためです。 ドキュメントの記述子ツリーのすべての記述子が起動時に作成されると、起動時間が長くなります。
properties
プロパティは、このファクトリ関数によって作成された、キャッシュされたオブジェクトを返します。
メモ: click="doSomething();"
などのイベントハンドラーは、events
オブジェクト(properties
オブジェクトではない)に含められます。
関連する API エレメント
type | プロパティ |
public var type:Class
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
MXML に指定されたコンポーネントのクラスです。
例えば、次のようなコードを作成するとします。
<mx:TextInput/>
この場合、記述子の type
プロパティはクラス mx.controls.TextInput です。
MXML コンパイラーによって作成された ComponentDescriptor オブジェクトの場合、すべての MXML タグが mx:TextInput のようなタグ名を持つため、プロパティは null
になりません。
MXML タグとその対応クラスのマッピングは、XML 名前空間とその名前空間に関連付けられた「マニフェストファイル」(存在する場合)によって決まります。 例えば、接頭辞 mx: によって表される標準 Flex 名前空間 http://www.adobe.com/2006/mxml
は、(flex-config.xml ファイルで)マニフェストファイル mxml-manifest.xml に関連付けられており、このファイルは次のタグを持ちます。
<component id="TextInput" class="mx.controls.TextInput"/>
これは、タグ名 mx:TextInput をクラス mx.controls.TextInput にマップします。マニフェストファイルを使用することにより、単一の XML 名前空間のコンポーネントを複数の ActionScript パッケージのクラスにマップできます。
ComponentDescriptor | () | コンストラクター |
invalidateProperties | () | メソッド |
public function invalidateProperties():void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
キャッシュされた properties
プロパティを無効化します。次に properties
プロパティを読み込むときに、propertiesFactory
プロパティの値に指定された関数からプロパティが再生成されます。
toString | () | メソッド |
Tue Jun 12 2018, 10:34 AM Z