メソッド フレームあり | フレームなし

mx.managers
LayoutManager クラス




LayoutManager クラス

LayoutManager は、測定やレイアウトの処理のエンジンとなる静的クラスです。

レイアウトは、処理、測定、レイアウト、および描画の 4 段階で実行されます。

各段階はそれぞれ独立しており、1 つの段階の UIObject がすべて処理されてから、次の段階に進みます。ある段階の UIObject を処理しているときに、UIObject を他の段階で再処理する要求が発生することがあります。このような要求はキューに格納され、再処理が必要な段階が次回実行されるときに処理されます。

処理段階は commitProperties() の呼び出しで始まります。このメソッドは、オブジェクトのリスト (FIFO 順) の順に各オブジェクトの commitProperties() メソッドを呼び出します。

この段階では、測定段階およびレイアウト段階に入る前に、プロパティの設定に依存するコンテンツを持つコンポーネントを構成できます。コンポーネントのプロパティ設定メソッドでは、パフォーマンスの観点から、新しいプロパティ値に更新する処理の一部を実行しないことがあります。代わりに、invalidateProperties() を呼び出して、この段階が実行されるまで処理を延期します。これにより、プロパティが何回も設定される場合に、不要な作業の発生を防止します。

測定段階は measureSizes() の呼び出しで始まります。このメソッドは、オブジェクトのリスト (ネストレベルで並べ替え) の順で各オブジェクトの measure() メソッドを呼び出し、オブジェクトのサイズが変更されていないかを判断します。

オブジェクトの invalidateSize() メソッドが以前に呼び出されている場合は、measure() メソッドが呼び出されます。
measure() が呼び出された結果、オブジェクトのサイズまたは位置が変更された場合は、オブジェクトの invalidateLayout() メソッドが呼び出されます。このオブジェクトは処理待ちのキューに追加され、次回レイアウト段階が実行されるときに処理されます。さらに、このオブジェクトの親は、invalidateSize() の呼び出しによって測定段階に、invalidateLayout() の呼び出しによってレイアウト段階の両方にマークされます。

リスト内のオブジェクトは、ネストレベルが最も深いオブジェクトからネストの順番に処理されます。これは、ボトムアップ順、または逆順とも呼ばれます。

レイアウト段階は layoutChildren() への呼び出しで開始します。このメソッドは、オブジェクトのリスト (ネストレベルの逆順で並べ替え) の順で各オブジェクトの layoutChildren() メソッドを呼び出し、オブジェクトに対して、そこに含まれているすべてのコンポーネント (子など) のサイズと位置を設定することを要求します。

オブジェクトの invalidateLayout() メソッドが以前に呼び出されている場合は、layoutChildren() メソッドが呼び出されます。

リストにあるオブジェクトは、ネストレベルが最も浅いオブジェクトからネストの順番とは逆の順番で処理されます。これは、トップダウン順、または正順とも呼ばれます。

描画段階は drawChildren() への呼び出しで開始します。このメソッドは、オブジェクトのリスト (FIFO 順で並べ替え) の順で各オブジェクトの draw() メソッドを呼び出し、オブジェクトに対して、オブジェクトおよびそこに含まれているコンポーネント (子など) を描画することを要求します。オブジェクトをキューに配置するには、そのオブジェクトに対して invalidate() を呼び出している必要があります。



メソッド
staticinvalidateDraw( obj:mx.core.UIObject) :  Void
ビューに子が追加されたとき、またはビューから子が削除されたときに呼び出されます。
staticinvalidateLayout( obj:mx.core.UIObject) :  Void
ビューに子が追加されたとき、またはビューから子が削除されたときに呼び出されます。
staticinvalidateSize( obj:mx.core.UIObject) :  Void
オブジェクトのサイズが変化したときに呼び出されます。



メソッドの詳細

invalidateDraw

static  invalidateDraw( obj:mx.core.UIObject) :  Void

ビューに子が追加されたとき、またはビューから子が削除されたときに呼び出されます。この場合、ビューのサイズが変更されていなくても、ビューのレイアウトアルゴリズムを実行する必要があります。

パラメータ
    obj:mx.core.UIObject - オブジェクトを表します。


invalidateLayout

static  invalidateLayout( obj:mx.core.UIObject) :  Void

ビューに子が追加されたとき、またはビューから子が削除されたときに呼び出されます。この場合、ビューのサイズが変更されていなくても、ビューのレイアウトアルゴリズムを実行する必要があります。

パラメータ
    obj:mx.core.UIObject - オブジェクトを表します。


invalidateSize

static  invalidateSize( obj:mx.core.UIObject) :  Void

オブジェクトのサイズが変化したときに呼び出されます。オブジェクトのサイズは、次の 2 つの理由により変化する場合があります。
  1. オブジェクトの内容が変化した。たとえば、ラベルが変更されるとボタンのサイズが変更されます。
  2. スクリプトが、minWidth、minHeight、preferredWidth、preferredHeight、 maxWidth、maxHeight のいずれかのプロパティを明示的に変更した。
1 が発生した場合は、オブジェクトの寸法を再計算する必要があります。2 が発生した場合は、新しいオブジェクトのサイズがわかっているので、寸法を再計算する必要はありません。ただし、オブジェクトの親を再測定および再レイアウトする必要があります。

パラメータ
    obj:mx.core.UIObject - オブジェクトを表します。