パッケージ | mx.managers |
インターフェイス | public interface ILayoutManager extends IEventDispatcher |
実装者 | LayoutManager |
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
各段階はそれぞれ独立しており、1 つの段階の UIComponent がすべて処理されてから、次の段階に進みます。 ある段階の UIComponent を処理しているときに、UIComponent を他の段階で再処理する要求が発生することがあります。 このような要求はキューに格納され、再処理が必要な段階が次回実行されるときに処理されます。
処理段階は validateProperties()
の呼び出しで始まります。(ネストレベルの逆順で並べ替えた)オブジェクトのリストで、各オブジェクトの
validateProperties()
メソッドを順番に呼び出します。
リストにあるオブジェクトは、ネストレベルが最も浅いオブジェクトからネストの順番とは逆の順番で処理されます。 これは、トップダウン順、または正順とも呼ばれます。
この段階では、測定段階およびレイアウト段階に入る前に、プロパティの設定に依存するコンテンツを持つコンポーネントを構成できます。 コンポーネントのプロパティ設定メソッドでは、パフォーマンスの観点から、新しいプロパティ値に更新する処理の一部を実行しないことがあります。 代わりに、invalidateProperties()
メソッドを呼び出して、この段階が実行されるまで処理を延期します。 これにより、プロパティが何回も設定される場合に、不要な作業の発生を防止します。
測定段階は validateSize()
の呼び出しで始まります。(ネストレベルで並べ替えた)オブジェクトのリストで、各オブジェクトの
validateSize()
メソッドを順番に呼び出し、オブジェクトのサイズが変更されていないかを確認します。
オブジェクトの
invalidateSize()
メソッドが以前に呼び出されている場合は、validateSize()
メソッドが呼び出されます。 validateSize()
が呼び出された結果、オブジェクトのサイズまたは位置が変更された場合は、オブジェクトの
invalidateDisplayList()
メソッドが呼び出されます。このオブジェクトは処理待ちのキューに追加され、次回レイアウト段階が実行されるときに処理されます。 さらに、このオブジェクトの親は、
invalidateSize()
の呼び出しによって測定段階に、
invalidateDisplayList()
の呼び出しによってレイアウト段階の両方にマークされます。
リスト内のオブジェクトは、ネストレベルが最も深いオブジェクトからネストの順番に処理されます。 これは、ボトムアップ順、または逆順とも呼ばれます。
レイアウト段階は validateDisplayList()
の呼び出しで始まります。(ネストレベルの逆順で並べ替えた)オブジェクトのリストで、各オブジェクトの
validateDisplayList()
メソッドを順番に呼び出し、オブジェクトに対して、そこに含まれているすべてのコンポーネント(つまり、子)のサイズと位置を設定することを要求します。
オブジェクトの
invalidateDisplayList()
メソッドが以前に呼び出されている場合は、オブジェクトに対して validateDisplayList()
メソッドが呼び出されます。
リストにあるオブジェクトは、ネストレベルが最も浅いオブジェクトからネストの順番とは逆の順番で処理されます。 これは、トップダウン順、または正順とも呼ばれます。
通常、コンポーネントは validateProperties()
、validateSize()
、validateDisplayList()
の各メソッドをオーバーライドしません。 UIComponents の場合、ほとんどのコンポーネントが commitProperties()
、measure()
または updateDisplayList()
メソッドをオーバーライドします。これらのメソッドはそれぞれ、validateProperties()
、validateSize()
、validateDisplayList()
メソッドによって呼び出されます。
アプリケーションの起動時に、LayoutManager の単一のインスタンスが作成され、UIComponent.layoutManager
プロパティに格納されます。 すべてのコンポーネントは、このインスタンスを使用する必要があります。 UIComponent オブジェクトにアクセスできない場合は、静的 LayoutManager.getInstance()
メソッドを使用して LayoutManager にアクセスすることもできます。
プロパティ | 定義元 | ||
---|---|---|---|
usePhasedInstantiation : Boolean
LayoutManager で段階と段階の間での画面更新が許可されているかどうかを示すフラグです。 | ILayoutManager |
メソッド | 定義元 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | IEventDispatcher | ||
イベントをイベントフローに送出します。 | IEventDispatcher | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | IEventDispatcher | ||
コンポーネントが変更され、コンポーネントのレイアウトやビジュアルオブジェクトの変更が必要な場合に呼び出されます。 | ILayoutManager | ||
validateProperties() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。 | ILayoutManager | ||
validateSize() メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。 | ILayoutManager | ||
検証が必要なコンポーネントがある場合は true を返します。すべてのコンポーネントの検証が完了している場合は false を返します。 | ILayoutManager | ||
EventDispatcher オブジェクトからリスナーを削除します。 | IEventDispatcher | ||
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。 | ILayoutManager | ||
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。 | ILayoutManager | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | IEventDispatcher |
usePhasedInstantiation | プロパティ |
usePhasedInstantiation:Boolean
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
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
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
コンポーネントが変更され、コンポーネントのレイアウトやビジュアルオブジェクトの変更が必要な場合に呼び出されます。 この場合、コンポーネントのサイズが変更されていなくても、コンポーネントのレイアウトアルゴリズムを実行する必要があります。 例えば、新しい子コンポーネントが追加された場合、スタイルプロパティが変更された場合、コンポーネントの親によってコンポーネントに新しいサイズが指定された場合などがあります。
パラメーター
obj:ILayoutManagerClient — 変更されたオブジェクトです。
|
invalidateProperties | () | メソッド |
public function invalidateProperties(obj:ILayoutManagerClient):void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
validateProperties()
メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。 コンポーネントは、プロパティが変更されたときにこのメソッドを呼び出す必要があります。 通常、プロパティ設定メソッドでは、新規の値を一時変数に格納し、invalidateProperties()
メソッドを呼び出して、後でこの新規の値が実際にコンポーネントやコンポーネントの子に適用されるときに validateProperties()
メソッドおよび commitProperties()
メソッドが呼び出されるようにします。 この手順の利点は、複数のプロパティを一度に変更して、これらのプロパティが相互にやり取りできるようにしたり、プロパティを特定の順序で適用する(必要がある)ときにコードを繰り返したりできることです。 この手順を使用すると、最も効率的に新規のプロパティ値を適用できます。
パラメーター
obj:ILayoutManagerClient — プロパティが変更されたオブジェクト。
|
invalidateSize | () | メソッド |
public function invalidateSize(obj:ILayoutManagerClient):void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
validateSize()
メソッドが呼び出されるのを待機しているコンポーネントのリストにオブジェクトを追加します。 オブジェクトのサイズが変化したときに呼び出されます。
オブジェクトのサイズは、次の 2 つの理由により変化する場合があります。
- オブジェクトの内容が変化した場合。 例えば、ラベルが変更されるとボタンの
label
が変更されます。 minWidth
、minHeight
、explicitWidth
、explicitHeight
、maxWidth
またはmaxHeight
プロパティのいずれかが、スクリプトによって明示的に変更された場合。
前者の場合は、オブジェクトの寸法を再計算する必要があります。 後者の場合は、新しいオブジェクトのサイズがわかっているので、寸法を再計算する必要はありません。 ただし、オブジェクトの親を再測定して再レイアウトする必要があります。
パラメーター
obj:ILayoutManagerClient — サイズが変更されたオブジェクト。
|
isInvalid | () | メソッド |
validateClient | () | メソッド |
public function validateClient(target:ILayoutManagerClient, skipDisplayList:Boolean = false):void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。 通常、コンポーネントは LayoutManager の無効化メソッドを呼び出して、プロパティを後で適用します。 設定した実際のプロパティはすぐに読み出すことができますが、プロパティがコンポーネント内の他のプロパティ、あるいはコンポーネントの子や親に影響を与えるものである場合、これらの他のプロパティはすぐには更新されません。
値が必ず更新されるようにするには、validateClient()
メソッドを呼び出します。 このメソッドは、ネストレベルがターゲットコンポーネント以上であるすべてのコンポーネントのすべてのプロパティを更新してから終了します。 このメソッドを呼び出すと計算の負荷が大きいため、このメソッドは必要な場合にのみ使用してください。
パラメーター
target:ILayoutManagerClient — ここに渡されるコンポーネントは、どのコンポーネントを検証する必要があるかをテストするために使用されます。 このコンポーネントに含まれるすべてのコンポーネントに対して、validateProperties() 、commitProperties() 、validateSize() 、measure() 、validateDisplayList() および updateDisplayList() の各メソッドが呼び出されます。
| |
skipDisplayList:Boolean (default = false ) — true の場合、validateDisplayList() メソッドおよび updateDisplayList() メソッドを呼び出しません。
|
validateNow | () | メソッド |
public function validateNow():void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
プロパティが変更されても、一般的にはコンポーネントはその変更をすぐに適用しません。 通常、コンポーネントは LayoutManager の無効化メソッドを呼び出して、プロパティを後で適用します。 設定した実際のプロパティはすぐに読み出すことができますが、プロパティがコンポーネント内の他のプロパティ、あるいはコンポーネントの子や親に影響を与えるものである場合、これらの他のプロパティはすぐには更新されません。 値が必ず更新されるようにするには、validateNow()
メソッドを呼び出します。 このメソッドは、コンポーネントのすべてのプロパティを更新してから終了します。 このメソッドを呼び出すと計算の負荷が大きいため、このメソッドは必要な場合にのみ使用してください。
Tue Jun 12 2018, 10:34 AM Z