パッケージmx.core
public class ComponentDescriptor
継承ComponentDescriptor Inheritance Object
SubclassesUIComponentDescriptor

ComponentDescriptor は、UIComponentDescriptor クラスの基本クラスです。UIComponentDescriptor クラスは、ビジュアルコンポーネントのインスタンスの MXML タグに指定された情報をカプセル化します。Flex 2 では、ビジュアルではないコンポーネントは別に扱われ、記述子を持ちませんが、将来のバージョンでは、それらのコンポーネントについても ComponentDescriptor 基本クラスが使用されるようになる可能性があります。

MXML ファイル内のほとんどのタグは、UIComponent オブジェクトのツリーを説明するものです。たとえば、<mx:Application> タグは UIComponent オブジェクトを表し、その子コンテナとコントロールもすべて UIComponent オブジェクトです。

MXML コンパイラは、それぞれの MXML タグを UIComponentDescriptor インスタンスにコンパイルします。厳密には、MXML コンパイラは ActionScript データ構造を自動生成します。これは、UIComponentDescriptor オブジェクトのツリーになります。

実行時に、Container クラスの createComponentsFromDescriptors() メソッドは、コンテナの childDescriptors 配列の UIComponentDescriptor オブジェクト内の情報を使用して、コンテナの子である実際の UIComponent オブジェクト、およびさらに深い子孫を作成します。コンテナのプロパティ creationPolicy の値によっては、アプリケーションの起動時にコンポーネントの一部が表示されるとき、またはアプリケーションの開発者が手動で createComponentsFromDescriptors() メソッドを呼び出したときに、子孫が作成されることがあります。

通常、ComponentDescriptor または UIComponentDescriptor インスタンスを自分で作成することはありません。Container クラスの childDescriptors 配列を経由して、MXML コンパイラが自動生成したインスタンスにアクセスできます。

関連項目

mx.core.UIComponentDescriptor
mx.core.Container.childDescriptors
mx.core.Container.creationPolicy
mx.core.Container.createComponentsFromDescriptors()
遅延コンポーネントの作成


パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  document : Object
コンポーネントが作成されるドキュメントオブジェクトへの参照です。
ComponentDescriptor
  events : Object
MXML に指定された、コンポーネントのイベントハンドラの名前と値のペアを含むオブジェクトです。
ComponentDescriptor
  id : String
MXML に指定されたコンポーネントの識別子です。
ComponentDescriptor
  properties : Object
[read-only] MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトです。
ComponentDescriptor
  propertiesFactory : Function
MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトを返す関数です。
ComponentDescriptor
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  type : Class
MXML に指定されたコンポーネントのクラスです。
ComponentDescriptor
パブリックメソッド
 メソッド定義
  ComponentDescriptor(descriptorProperties:Object)
コンストラクタです。
ComponentDescriptor
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  invalidateProperties():void
キャッシュされた properties プロパティを無効化します。
ComponentDescriptor
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  toString():String
"ComponentDescriptor_" および id プロパティの値を含むストリングを返します。
ComponentDescriptor
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
プロパティの詳細
documentプロパティ
public var document:Object

コンポーネントが作成されるドキュメントオブジェクトへの参照です。

関連項目

eventsプロパティ 
public var events:Object

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

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 は、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:Function

MXML に指定された、コンポーネントのプロパティの名前と値のペアを含むオブジェクトを返す関数です。

たとえば、次のようなコードを作成するとします。

<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:Class

MXML に指定されたコンポーネントのクラスです。

たとえば、次のようなコードを作成するとします。

<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 オブジェクトのプロパティ、たとえば typeidpropertiesFactoryevents などの名前と値のペアを含むオブジェクトです。
メソッドの詳細
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