| パッケージ | mx.core |
| public class ComponentDescriptor | |
| 継承 | ComponentDescriptor Object |
| Subclasses | UIComponentDescriptor |
MXML ファイル内のほとんどのタグは、UIComponent オブジェクトのツリーを説明するものです。たとえば、<mx:Application> タグは UIComponent オブジェクトを表し、その子コンテナとコントロールもすべて UIComponent オブジェクトです。
MXML コンパイラは、それぞれの MXML タグを UIComponentDescriptor インスタンスにコンパイルします。厳密には、MXML コンパイラは ActionScript データ構造を自動生成します。これは、UIComponentDescriptor オブジェクトのツリーになります。
実行時に、Container クラスの createComponentsFromDescriptors() メソッドは、コンテナの childDescriptors 配列の UIComponentDescriptor オブジェクト内の情報を使用して、コンテナの子である実際の UIComponent オブジェクト、およびさらに深い子孫を作成します。コンテナのプロパティ creationPolicy の値によっては、アプリケーションの起動時にコンポーネントの一部が表示されるとき、またはアプリケーションの開発者が手動で createComponentsFromDescriptors() メソッドを呼び出したときに、子孫が作成されることがあります。
通常、ComponentDescriptor または UIComponentDescriptor インスタンスを自分で作成することはありません。Container クラスの childDescriptors 配列を経由して、MXML コンパイラが自動生成したインスタンスにアクセスできます。
関連項目
| プロパティ | 定義 | ||
|---|---|---|---|
![]() | constructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
| Object | |
| document : Object
コンポーネントが作成されるドキュメントオブジェクトへの参照です。
| ComponentDescriptor | ||
| events : Object
MXML に指定された、コンポーネントのイベントハンドラの名前と値のペアを含むオブジェクトです。
| ComponentDescriptor | ||
| id : String
MXML に指定されたコンポーネントの識別子です。
| ComponentDescriptor | ||
| properties : Object
[read-only]
MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトです。
| ComponentDescriptor | ||
| propertiesFactory : Function
MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトを返す関数です。
| ComponentDescriptor | ||
![]() | prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | |
| type : Class
MXML に指定されたコンポーネントのクラスです。
| ComponentDescriptor | ||
| メソッド | 定義 | ||
|---|---|---|---|
| ComponentDescriptor(descriptorProperties:Object)
コンストラクタです。
| ComponentDescriptor | ||
![]() | hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
| invalidateProperties():void
キャッシュされた
properties プロパティを無効化します。 | ComponentDescriptor | ||
![]() | isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
| Object | |
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
| toString():String
"ComponentDescriptor_" および
id プロパティの値を含むストリングを返します。 | ComponentDescriptor | ||
![]() | valueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
| Object | |
| document | プロパティ |
| events | プロパティ |
public var events:ObjectMXML に指定された、コンポーネントのイベントハンドラの名前と値のペアを含むオブジェクトです。
たとえば、次のようなコードを作成するとします。
<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:StringMXML に指定されたコンポーネントの識別子です。
たとえば、次のようなコードを作成するとします。
<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 は、NameUtil.createUniqueName() メソッドから返された、"Button3" のような自動生成されたストリングのままです。この name は、toString() メソッドから返されるストリングの生成に使用されます。これを使用し、getChildByName() を呼び出して親からコンポーネントを見つけることもできます。
関連項目
| properties | プロパティ |
properties:Object [read-only]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
関連項目
| propertiesFactory | プロパティ |
public var propertiesFactory:FunctionMXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトを返す関数です。
たとえば、次のようなコードを作成するとします。
<mx:TextInput width="150" text="Hello">
記述子の propertiesFactory プロパティはこの関数です。
function():Object { return { width:150, text:"Hello" }; }
コンポーネントに MXML プロパティが指定されていない場合、propertiesFactory プロパティは null になります。この場合、コンポーネントはデフォルトのプロパティ値を使用します。
propertyFactory が実際のオブジェクトではなく、オブジェクトを返す関数であるのは、ComponentDescriptor オブジェクトのツリーを段階的に「展開」できるようにするためです。ドキュメントの記述子ツリーのすべての記述子が起動時に作成されると、起動時間が長くなります。
properties プロパティは、このファクトリ関数によって作成された、キャッシュされたオブジェクトを返します。
メモ:click="doSomething();" などのイベントハンドラは、properties オブジェクトではなく、events オブジェクトに含められます。
関連項目
| type | プロパティ |
public var type:ClassMXML に指定されたコンポーネントのクラスです。
たとえば、次のようなコードを作成するとします。
<mx:TextInput/>
記述子の type プロパティはクラス mx.controls.TextInput です。
MXML コンパイラによって作成された ComponentDescriptor オブジェクトの場合、すべての MXML タグが mx:TextInput のようなタグ名を持つため、プロパティは null になりません。
MXML タグとその対応クラスのマッピングは、XML 名前空間とその名前空間に関連付けられた "manifest" ファイル (存在する場合) によって決まります。たとえば、mx:prefix によって表される標準 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 | () | コンストラクタ |
public 関数 ComponentDescriptor(descriptorProperties:Object)コンストラクタです。
パラメータdescriptorProperties:Object — ComponentDescriptor オブジェクトのプロパティ、たとえば type、id、propertiesFactory、events などの名前と値のペアを含むオブジェクトです。
|
| invalidateProperties | () | メソッド |
public function invalidateProperties():void
キャッシュされた properties プロパティを無効化します。次に properties プロパティを読み込むときに、propertiesFactory プロパティの値に指定された関数からプロパティが再生成されます。
| toString | () | メソッド |
public function toString():String
"ComponentDescriptor_" および id プロパティの値を含むストリングを返します。
String —
"ComponentDescriptor_" および id プロパティの値を含むストリングです。
|
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flex/2_jp/langref/mx/core/ComponentDescriptor.html