2012年4月9日月曜日

遅延コンポーネントの生成


コンテナの creationPolicy プロパティを none に設定した場合、コンテナ内で MXML タグとして宣言されているコンポーネントは生成されません。代わりに、これらのコンポーネントを記述したオブジェクトが Array に追加されます。これらのオブジェクトは記述子と呼ばれます。createComponentsFromDescriptors() メソッドを使用すると、これらのコンポーネントを手動でインスタンス化できます。このメソッドは、Container 基本クラスで定義されます。

createComponentsFromDescriptors() メソッドの使用

コンテナの createComponentsFromDescriptors() メソッドを使用して、コンテナのすべての子を同時に生成することができます。

createComponentsFromDescriptors() メソッドのシグネチャは次のとおりです。

 container.createComponentsFromDescriptors(recurse:Boolean):Boolean  

recurse 引数は、コンポーネントの子を再帰的にインスタンス化するかどうかを指定します。コンポーネントの子をインスタンス化する場合は、このパラメータを true に、子をインスタンス化しない場合は false に設定します。デフォルト値は false です。

単一ビューコンテナで createComponentsFromDescriptors() メソッドを呼び出すと、creationPolicy プロパティの値に関係なく、そのコンテナのすべてのコントロールがインスタンス化されます。


ダミー():この意味はjavascriptが何を行います

ナビゲータコンテナで creationPolicy プロパティを all に設定すると、そのコンテナ内のすべてのビューにあるすべてのコントロールが生成されるため、createComponentsFromDescriptors() メソッドを呼び出す必要がありません。creationPolicy プロパティを none または auto に設定して createComponentsFromDescriptors() メソッドを呼び出すと、現在のビューのコントロールとその子孫だけが生成されます。

これ以外の一般的な使用法として、ナビゲータコンテナの creationPolicy プロパティを auto に設定するという方法があります。その後で、navigator.getChildAt(n).createComponentsFromDescriptors() を呼び出すと、n 番目のビューの子を明示的に生成できます。

次の例では、アプリケーションの起動時には HBox コンテナのボタンを一切インスタンス化せずに、ユーザーが creationPolicy プロパティの値を変更したときにインスタンス化します。ユーザーが、ドロップダウンリストから「すべて」を選択すると、HBox コンテナのボタンがインスタンス化されます。


htmlで<PRE>を使用して列を作る方法
                                                    none                 all                                                                                  

前の例で実行する SWF ファイルは以下のとおりです。


サブタイプのキーは継承されていますか?

childDescriptors プロパティの使用

Flex アプリケーションの起動時には、各 MXML コンポーネントを記述する Object 型のオブジェクトが 作成されます。これらのオブジェクトには、オブジェクトの MXML タグに設定されているコンポーネントの名前、タイプ、プロパティに関する情報が含まれます。Flex は、各コンテナが維持する Array にこれらのオブジェクトを追加します。例えば、2 つの Canvas コンテナを持つアプリケーションには、それらの Canvas コンテナを記述するオブジェクトを含む Array があります。そして、これらのコンテナには、その子を記述するオブジェクトを持つ Array があります。

Array に含まれる各オブジェクトのタイプは ComponentDescriptor です。この Array にアクセスするには、コンテナの childDescriptors プロパティを使用します。記述子は 0 から始まるインデックス値を使って指定します。すべてのコンテナには、childDescriptors プロパティがあります。

コンテナ内のコントロールが直ちにインスタンス化されるか、インスタンス化が保留されるかは、creationPolicy プロパティの値により決まります。インスタンス化が保留されている場合は、この Array のプロパティを使用すれば、各コンポーネントの ComponentDescriptor にアクセスし、指定した時刻にそのオブジェクトを生成できます。

childDescriptors プロパティは、オブジェクトの Array を指し示しているため、length などの Array 関数を使って、子に対して繰り返し処理を実行できます。次にその例を示します。


                                            

前の例で実行する SWF ファイルは以下のとおりです。

ComponentDescriptor のプロパティには idtype、および properties があります。properties プロパティは、MXML タグに明示的に追加されるプロパティを含むオブジェクトを参照します。このオブジェクトには、スタイルやイベントなどのプロパティは格納されません。

コンポーネントの破棄

生成したコンポーネントは、ユーザーがアプリケーションを終了するか、コンポーネントを親からデタッチしてガベージコレクタで破棄するまで存続します。


親コンテナからコンポーネントをデタッチするには、removeChild() メソッドまたは removeChildAt() メソッドを使用します。コンテナからすべての子コントロールを削除する場合は、removeAllChildren() メソッドも使用できます。これらのメソッドを呼び出しても、オブジェクトがすぐにメモリから削除されるわけではありません。Adobe® Flash® Player では、子に対する参照がこれ以外にない場合は、将来のいずれかの時点にガベージコレクションが行われます。他のオブジェクトにその子への参照が保存されている場合、その子はメモリから削除されません。

これらのメソッドの使用の詳細については、『Adobe Flex リファレンスガイド』の View クラスを参照してください。



These are our most popular posts:

ORB (Java 2 Platform SE 5.0)

これらのインタフェースは、開発者が直接使用することもできますが、通常は ORB で 内部的に使用されるため、一般のプログラマ ... TypeCode; Any; NamedValue; Context; Environment; これらのオブジェクトが格納されているリスト ( NVList など). DII の複数のメッセージを送信する. ORB クラスを使うと、オブジェクトがネットワーク上の どこに実装されていても、その参照を取得できます。 ...... 要求する情報のサービスタイプ を示す short: service info - このメソッドで生成された ServiceInformation オブジェクト を保持する ... read more

NumPy 利用ノート

また、NumPy に関する各種ドキュメント、リファレンスがHTML と PDF ファイルの形で 利用できるようになっている。 これらの .... するという話だ。多次元版スライス。 ufunc: 個々の要素ごとに演算するようなタイプの演算を高速に処理する。 ... この種の操作で 新しくできた array は、 実は参照ベースの proxy オブジェクトであることが多いようだ。 read more

Java 入門

2004年10月4日 ... オブジェクトを参照するクラス型変数は、基本データ型の変数に対して、参照型変数と 呼ばれます。配列の変数も参照 ... int[] array; 宣言array = new int[4]; 生成 array[0] =10; array[1]=11; array[2]=12; array[3]=13; 初期化. 実は、配列も ... 配列型変数は 参照型変数なので、複数の要素の連なりを保持しているわけではなく、その参照(識別 する為の ID)が保持されています。配列型変数を ... 従って、実体はメモリ上に一つだけ であり、その実体を参照する変数が二つできたことになります。 従って、代入 ... read more

JNI 関数

しなければならない」(または「する必要がある」) という表現は、JNI プログラマに対する 制約を表していることに注意してください。 ..... JDK/JRE 1.1 は、上記の DeleteLocalRef 関数を提供したため、プログラマは手動でローカル参照を削除すること ができます。 .... があり、PhantomReference オブジェクトでも参照されている オブジェクトを保持するために弱グローバル参照を使用することが可能な ...... New PrimitiveTypeArray を、次の表の実際のプリミティブ配列コンストラクタルーチン名の 1 つと置き換え、ArrayType を ... read more

Related Posts



0 コメント:

コメントを投稿