パッケージmx.managers
インターフェイスpublic interface ILayoutManager extends IEventDispatcher
実装者 LayoutManager

LayoutManager は、Flex の測定およびレイアウト手順の背後にあるエンジンです。 レイアウトは、処理、測定、およびレイアウトの 3 段階で実行されます。

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

処理段階は validateProperties() の呼び出しで始まります。(ネストレベルの逆順で並べ替えた)オブジェクトのリストで、各オブジェクトの validateProperties() メソッドを順番に呼び出します。

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

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

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

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

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

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

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

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

通常、コンポーネントは validateProperties() メソッド、validateSize() メソッド、または validateDisplayList() メソッドをオーバーライドしません。UIComponent の場合、ほとんどのコンポーネントが commitProperties() メソッド、measure() メソッド、または updateDisplayList() メソッドをオーバーライドします。これらのメソッドはそれぞれ、validateProperties() メソッド、validateSize() メソッド、validateDisplayList() メソッドによって呼び出されます。

アプリケーションの起動時に、LayoutManager の単一のインスタンスが作成され、UIComponent.layoutManager プロパティに格納されます。 すべてのコンポーネントは、このインスタンスを使用する必要があります。 UIComponent オブジェクトにアクセスできない場合は、静的 LayoutManager.getInstance() メソッドを使用して LayoutManager にアクセスすることもできます。



パブリックプロパティ
 プロパティ定義元
  usePhasedInstantiation : Boolean
LayoutManager で段階と段階の間での画面更新が許可されているかどうかを示すフラグです。
ILayoutManager
パブリックメソッド
 メソッド定義元
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
IEventDispatcher
 Inherited
イベントをイベントフローに送出します。
IEventDispatcher
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
IEventDispatcher
  
コンポーネントが変更され、コンポーネントのレイアウトやビジュアルオブジェクトの変更が必要な場合に呼び出されます。
ILayoutManager
  
validateProperties() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。
ILayoutManager
  
validateSize() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。
ILayoutManager
  
検証が必要なコンポーネントがある場合は true を返します。すべてのコンポーネントの検証が完了している場合は false を返します。
ILayoutManager
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
IEventDispatcher
  
validateClient(target:ILayoutManagerClient, skipDisplayList:Boolean = false):void
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。
ILayoutManager
  
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。
ILayoutManager
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
IEventDispatcher
プロパティの詳細
usePhasedInstantiationプロパティ
usePhasedInstantiation:Boolean

LayoutManager で段階と段階の間での画面更新が許可されているかどうかを示すフラグです。 true の場合、測定およびレイアウトの段階ごとに画面更新が行われます。 コンポーネントのすべてのプロパティが検証されるまで、すべてのコンポーネントの validateProperties() および commitProperties() メソッドが呼び出されます。検証が完了すると、画面が更新されます。

次に、すべてのコンポーネントの測定が完了するまで、すべてのコンポーネントの validateSize() および measure() メソッドが呼び出されます。測定が完了すると、画面が再び更新されます。

最後に、すべてのコンポーネントの検証が完了するまで、すべてのコンポーネントの validateDisplayList() メソッドおよび updateDisplayList() メソッドが呼び出されます。検証が完了すると、画面が再び更新されます。1 つの段階の検証で、前の段階が無効化されると、LayoutManager が始めからやり直します。 多数のコンポーネントを作成して初期化する場合には、より効率的です。 フレームワークが、このプロパティを設定します。

false の場合、3 つの段階すべてが完了してから画面が更新されます。



実装
    public function get usePhasedInstantiation():Boolean
    public function set usePhasedInstantiation(value:Boolean):void
メソッドの詳細
invalidateDisplayList()メソッド
public function invalidateDisplayList(obj:ILayoutManagerClient):void

コンポーネントが変更され、コンポーネントのレイアウトやビジュアルオブジェクトの変更が必要な場合に呼び出されます。 この場合、コンポーネントのサイズが変更されていなくても、コンポーネントのレイアウトアルゴリズムを実行する必要があります。 例えば、新しい子コンポーネントが追加された場合、スタイルプロパティが変更された場合、コンポーネントの親によってコンポーネントに新しいサイズが指定された場合などがあります。

パラメータ

obj:ILayoutManagerClient — 変更されたオブジェクトです。

invalidateProperties()メソッド 
public function invalidateProperties(obj:ILayoutManagerClient):void

validateProperties() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。コンポーネントは、プロパティが変更されたときにこのメソッドを呼び出す必要があります。 通常、プロパティ設定メソッドでは、新規の値を一時変数に格納し、invalidateProperties() メソッドを呼び出して、後でこの新規の値が実際にコンポーネントやコンポーネントの子に適用されるときに validateProperties() および commitProperties() メソッドが呼び出されるようにします。この手順の利点は、複数のプロパティを一度に変更して、これらのプロパティが相互にやり取りできるようにしたり、プロパティを特定の順序で適用する(必要がある)ときにコードを繰り返したりできることです。 この手順を使用すると、最も効率的に新規のプロパティ値を適用できます。

パラメータ

obj:ILayoutManagerClient — プロパティが変更されたオブジェクト。

invalidateSize()メソッド 
public function invalidateSize(obj:ILayoutManagerClient):void

validateSize() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。オブジェクトのサイズが変化したときに呼び出されます。

オブジェクトのサイズは、次の 2 つの理由により変化する場合があります。

  1. オブジェクトの内容が変化した場合。 例えば、ラベルが変更されるとボタンの label が変更されます。
  2. スクリプトが、次のプロパティのいずれかを明示的に変更した。minWidthminHeightexplicitWidthexplicitHeightmaxWidth、または maxHeight

前者の場合は、オブジェクトの寸法を再計算する必要があります。 後者の場合は、新しいオブジェクトのサイズがわかっているので、寸法を再計算する必要はありません。 ただし、オブジェクトの親を再測定して再レイアウトする必要があります。

パラメータ

obj:ILayoutManagerClient — サイズが変更されたオブジェクト。

isInvalid()メソッド 
public function isInvalid():Boolean

検証が必要なコンポーネントがある場合は true を返します。すべてのコンポーネントの検証が完了している場合は false を返します。

戻り値
Boolean — 検証が必要なコンポーネントがある場合は true を返します。すべてのコンポーネントの検証が完了している場合は false を返します。
validateClient()メソッド 
public function validateClient(target:ILayoutManagerClient, skipDisplayList:Boolean = false):void

プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。 通常、コンポーネントは LayoutManager の無効化メソッドを呼び出して、プロパティを後で適用します。 設定した実際のプロパティはすぐに読み出すことができますが、プロパティがコンポーネント内の他のプロパティ、あるいはコンポーネントの子や親に影響を与えるものである場合、これらの他のプロパティはすぐには更新されません。

値が更新されることを保証するには、validateClient() メソッドを呼び出します。このメソッドは、ネストレベルがターゲットコンポーネント以上であるすべてのコンポーネントのすべてのプロパティを更新してから終了します。 このメソッドを呼び出すと計算の負荷が大きいため、このメソッドは必要な場合にのみ使用してください。

パラメータ

target:ILayoutManagerClient — ここに渡されるコンポーネントは、どのコンポーネントを検証する必要があるかをテストするために使用されます。 このコンポーネントによって含められたすべてのコンポーネントの validateProperties()commitProperties()validateSize()measure()validateDisplayList()、および updateDisplayList() メソッドが呼び出されます。
 
skipDisplayList:Boolean (default = false)true の場合、validateDisplayList() および updateDisplayList() メソッドを呼び出しません。

validateNow()メソッド 
public function validateNow():void

プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。 通常、コンポーネントは LayoutManager の無効化メソッドを呼び出して、プロパティを後で適用します。 設定した実際のプロパティはすぐに読み出すことができますが、プロパティがコンポーネント内の他のプロパティ、あるいはコンポーネントの子や親に影響を与えるものである場合、これらの他のプロパティはすぐには更新されません。 値が更新されることを保証するには、validateNow() メソッドを呼び出します。このメソッドは、コンポーネントのすべてのプロパティを更新してから終了します。 このメソッドを呼び出すと計算の負荷が大きいため、このメソッドは必要な場合にのみ使用してください。





 

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/mx/managers/ILayoutManager.html