アクセシビリティ

Flexテクニカルノート

Flex 2:createComponentFromDescriptor とcreateComponentsFromDescriptorsの機能を使用する

English

Flex 2のContainerクラスは、ユーザが子コンポーネントの作成を延期したり、コンポーネントのインスタンス化をプログラムしてスタートアップ時間やパフォーマンスを向上させることを可能にします。ここでは作成プロセスを管理するための2つのパブリックメソッド、createComponentFromDescriptorとcreateComponentFromDescriptorsが提供されています。本テクニカルノートでは、これらのメソッドの使用方法と違いについて詳しく説明します。

インスタンス化の延期は一般的に使用されているテクニックで、Flexアプリケーションのスタートアップ時間の向上や、creationPolicyが「なし」に設定された場合のコンテナ内の子コンポーネントのインスタンス化のタイミングや方法の管理に利用されます。mx.core.Containerのクラスで利用される主なメソッドには、createComponentFromDescriptorとcreateComponentFromDescriptorsの2つがあります。名称が示すように、createComponentFromDescriptorは単一のComponentDescriptorオブジェクトを使ってオブジェクトを作成するもの、一方のcreateComponentsFromDescriptorsは一連のComponentDescriptorオブジェクトを使ってコンテナのすべての子を作成するものです。2つのメソッドとも、追加的なブール引数を使って、子の子を再帰的に作成することもできます。

両者には使用方法に大きな違いがあります。createComponentsFromDescriptorsメソッドはどちらかといえば単純で、コンテナオブジェクトのすべての子を作成して表示します。また、すべての子の作成タイミングを管理するのがユーザであることを除き、creationPolicyを「すべて」に設定した場合と同じ効果を持っています。

これに対し、createComponentFromDescriptorの働き方はまた違います。このメソッドには、1度に1つの子しか作成しないこと以外にも、新規作成した子オブジェクトを表示リストに追加しないという特徴があります。従って、子オブジェクトは画面に表示されません。これを表示するには、container.validateNowメソッドを明示的に呼び出す必要があります。次に例を示します。

mycontainer.createComponentFromDescriptor(mycontainer.childDescriptors[0],true);
mycontainer.validateNow();

他にも、表示リストに子オブジェクトが追加されないために、親コンテナが完全に作成されたとはみなされず、親コンテナのcreationCompleteイベントが発生しないという特徴もあります。このイベントが適用されるのは、container.validateNowメソッドを初めて呼び出した後だけです。creationCompleteイベント下で特定のビジネスロジックが実行されると、ユーザはそこからさまざまな動作が発生することを考慮に入れねばなりません。

メソッドの使用方法とさまざまな動作に関する完全なをデモンストレーションでご覧ください。

最終更新日: 2006年6月26日

テクニカルノートの詳細

ID: 45fc6cf2
製品: Flex
バージョン: