パッケージmx.managers
public class LayoutManager
継承LayoutManager Inheritance EventDispatcher Inheritance Object
ImplementsILayoutManager

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 にアクセスすることもできます。



パブリックプロパティ
 プロパティ定義
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  usePhasedInstantiation : Boolean
LayoutManager で段階と段階の間での画面更新が許可されているかどうかを示すフラグです。
LayoutManager
パブリック Methods
 メソッド定義
  
コンストラクタです。
LayoutManager
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
リスナーがイベントの通知を受け取るように、イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録します。
EventDispatcher
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
  
[static] このシングルトンクラスの唯一のインスタンスを返します。インスタンスが存在しない場合は、作成します。
LayoutManager
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
指定されたプロパティがオブジェクトに定義されているかどうかを示します。
Object
  
コンポーネントが変更され、コンポーネントのレイアウトやビジュアルの変更が必要な場合に呼び出されます。
LayoutManager
  
validateProperties() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。
LayoutManager
  
validateSize() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。
LayoutManager
  
検証が必要なコンポーネントがある場合は true を返します。すべてのコンポーネントの検証が完了している場合は false を返します。
LayoutManager
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
  
validateClient(target:ILayoutManagerClient, skipDisplayList:Boolean = false):void
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。
LayoutManager
  
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。
LayoutManager
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント一覧定義
 Inherited Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
 Inherited Flash Player がオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
プロパティの詳細
usePhasedInstantiationプロパティ
usePhasedInstantiation:Boolean  [read-write]

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

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

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

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

実装
    public function get usePhasedInstantiation():Boolean
    public function set usePhasedInstantiation(value:Boolean):void
コンストラクタの詳細
LayoutManager()コンストラクタ
public 関数 LayoutManager()

コンストラクタです。

メソッドの詳細
getInstance()メソッド
public static function getInstance():LayoutManager

このシングルトンクラスの唯一のインスタンスを返します。インスタンスが存在しない場合は、作成します。

戻り値
LayoutManager
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
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() メソッドを呼び出します。このメソッドは、コンポーネントのすべてのプロパティを更新してから終了します。このメソッドを呼び出すと計算の負荷が大きいため、このメソッドは必要な場合にのみ使用してください。