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

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
パブリックメソッド
 メソッド定義
  LayoutManager()
コンストラクタ。
LayoutManager
 InheritedaddEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
 InheriteddispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
EventDispatcher
  getInstance():LayoutManager
[static] このシングルトンクラスの唯一のインスタンスを返します。インスタンスが存在しない場合は、作成します。
LayoutManager
 InheritedhasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  invalidateDisplayList(obj:ILayoutManagerClient):void
コンポーネントが変更され、コンポーネントのレイアウトやビジュアルの変更が必要な場合に呼び出されます。
LayoutManager
  invalidateProperties(obj:ILayoutManagerClient):void
validateProperties() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。
LayoutManager
  invalidateSize(obj:ILayoutManagerClient):void
validateSize() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。
LayoutManager
  isInvalid():Boolean
検証が必要なコンポーネントがある場合は true を返します。すべてのコンポーネントの検証が完了している場合は false を返します。
LayoutManager
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedremoveEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
  validateClient(target:ILayoutManagerClient, skipDisplayList:Boolean = false):void
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。
LayoutManager
  validateNow():void
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。
LayoutManager
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
 InheritedwillTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
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() メソッドを呼び出します。このメソッドは、コンポーネントのすべてのプロパティを更新してから終了します。このメソッドを呼び出すと計算の負荷が大きいため、このメソッドは必要な場合にのみ使用してください。