Paket | mx.managers |
Schnittstelle | public interface ILayoutManager extends IEventDispatcher |
Umsetzer | LayoutManager |
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Jede Phase unterscheidet sich von den anderen und alle UIComponents einer Phase werden verarbeitet, bevor die nächste Phase beginnt. Während der UIComponent-Verarbeitung in einer Phase kann es zu Anforderungen zur erneuten UIComponent-Verarbeitung in dieser Phase kommen. Diese Anforderungen werden in eine Warteschlange gestellt und erst beim nächsten Ausführen der Phase berücksichtigt.
Die Übernahme-Phase beginnt mit einem Aufruf der validateProperties()
-Methode. Diese Methode geht eine Liste von Objekten in umgekehrter Verschachtelungsreihenfolge durch und ruft die
validateProperties()
-Methode jedes Objekts auf.
Die Objekte in der Liste werden in umgekehrter Verschachtelungsreihenfolge verarbeitet, wobei das oberste Objekt in der Verschachtelungsstruktur zuerst aufgerufen wird. Dies entspricht einer Reihenfolge von oben nach unten oder von außen nach innen.
In dieser Phase können Komponenten, deren Inhalte von Eigenschaftseinstellungen abhängen, sich selbst konfigurieren, bevor die Messungs- und die Layoutphase beginnen. Aus Leistungsgründen führt die Methode zum Festlegen einer Komponenteneigenschaft nicht immer die gesamte Aktualisierung des neuen Eigenschaftswerts aus. Stattdessen wird die invalidateProperties()
-Methode aufgerufen, und die Aufgabe bis zur Ausführung dieser Phase zurückgestellt. Dies verhindert unnötige Mehrarbeit, wenn die Eigenschaft mehrmals eingestellt ist.
Die Messungs-Phase beginnt mit einem Aufruf der validateSize()
-Methode, die eine Liste von Objekten in der Verschachtelungsreihenfolge durchgeht und die
validateSize()
-Methode jedes Objekts aufruft, um zu bestimmen, ob sich die Größe des Objekts geändert hat.
Wurde zuvor die
invalidateSize()
-Methode eines Objekts aufgerufen, wird anschließend die validateSize()
-Methode aufgerufen. Wenn die Größe oder Position des Objekts durch einen validateSize()
-Aufruf geändert wurde, wird die
invalidateDisplayList()
-Methode des Objekts augerufen, um das Objekt der Verarbeitungswarteschlange für das nächste Ausführen der Layoutphase hinzuzufügen. Zusätzlich wird das übergeordnete Objekt für die Messungs- und Layoutphase markiert, indem
invalidateSize()
bzw.
invalidateDisplayList()
aufgerufen wird.
Die Objekte in der Liste werden in der Reihenfolge der Verschachtelung verarbeitet, wobei das unterste Objekt in der Verschachtelungsstruktur zuerst aufgerufen wird. Dies entspricht einer Reihenfolge von unten nach oben oder innen nach außen.
Die layout-Phase beginnt mit einem Aufruf der validateDisplayList()
-Methode. Diese Methode geht eine Liste von Objekten in umgekehrter Verschachtelungsreihenfolge durch und ruft die
validateDisplayList()
-Methode jedes Objekts auf, um das Objekt zur Änderung von Größe und Position aller enthaltenen Komponenten (einschließlich untergeordneter Objekte) aufzufordern.
Wurde zuvor die
invalidateDisplayList()
-Methode eines Objekts aufgerufen, wird anschließend die validateDisplayList()
-Methode des Objekts aufgerufen.
Die Objekte in der Liste werden in umgekehrter Verschachtelungsreihenfolge verarbeitet, wobei das oberste Objekt in der Verschachtelungsstruktur zuerst aufgerufen wird. Dies entspricht einer Reihenfolge von oben nach unten oder von außen nach innen.
Im Allgemeinen wird die validateProperties()
-, validateSize()
- oder validateDisplayList()
-Methode nicht von Komponenten überschrieben. Die meisten UIComponents überschreiben die commitProperties()
-, measure()
- oder updateDisplayList()
-Methode, die von der validateProperties()
-, validateSize()
- bzw. validateDisplayList()
-Methode aufgerufen werden.
Beim Starten der Anwendung wird eine einzige LayoutManager-Instanz erstellt und in der Eigenschaft UIComponent.layoutManager
gespeichert. Es wird erwartet, dass alle Komponenten diese Instanz verwenden. Wenn Sie keinen Zugriff auf das UIComponent-Objekt haben, können Sie den LayoutManager auch mit der statischen LayoutManager.getInstance()
-Methode aufrufen.
Eigenschaft | Definiert von | ||
---|---|---|---|
usePhasedInstantiation : Boolean
Ein Flag, das angibt, ob der LayoutManager Bildschirmaktualisierungen zwischen Phasen zulässt. | ILayoutManager |
Methode | Definiert von | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. | IEventDispatcher | ||
Sendet ein Ereignis in den Ereignisablauf. | IEventDispatcher | ||
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. | IEventDispatcher | ||
Wird bei Änderung einer Komponente aufgerufen, die eine Änderung von Layout und/oder Grafiken erfordert. | ILayoutManager | ||
Fügt ein Objekt der Liste von Komponenten hinzu, deren validateProperties()-Methode aufgerufen werden muss. | ILayoutManager | ||
Fügt ein Objekt der Liste von Komponenten hinzu, deren validateSize()-Methode aufgerufen werden muss. | ILayoutManager | ||
Gibt „true“ zurück, wenn Komponenten vorhanden sind, die validiert werden müssen. Gibt „false“ zurück, wenn alle Komponenten validiert wurden. | ILayoutManager | ||
Entfernt einen Listener aus dem EventDispatcher-Objekt. | IEventDispatcher | ||
Eigenschaftsänderungen werden in der Regel nicht sofort auf Komponenten angewendet. | ILayoutManager | ||
Eigenschaftsänderungen werden in der Regel nicht sofort auf Komponenten angewendet. | ILayoutManager | ||
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. | IEventDispatcher |
usePhasedInstantiation | Eigenschaft |
usePhasedInstantiation:Boolean
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Ein Flag, das angibt, ob der LayoutManager Bildschirmaktualisierungen zwischen Phasen zulässt. Bei true
werden Messung und Layout in Phasen vorgenommen (eine Phase pro Bildschirmaktualisierung). Für alle anderen Komponenten wird die validateProperties()
- und commitProperties()
-Methode aufgerufen, bis alle Eigenschaften validiert sind. Danach wird der Bildschirm aktualisiert.
Dann werden die validateSize()
- und die measure()
-Methode für alle Komponenten aufgerufen, bis alle Komponenten gemessen wurden, und der Bildschirm wird erneut aktualisiert.
Schließlich wird die validateDisplayList()
- und updateDisplayList()
-Methode für alle Komponenten aufgerufen, bis alle Komponenten validiert wurden, und der Bildschirm wird erneut aktualisiert. Wenn bei der Überprüfung einer Phase die Überprüfung einer früheren Phase rückgängig gemacht wird, beginnt der LayoutManager von vorne. Dies ist effizienter, wenn zahlreiche Komponenten erstellt und initialisiert werden. Die Architektur ist für die Einstellung dieser Eigenschaft zuständig.
Bei false
werden alle drei Phasen abgeschlossen, bevor der Bildschirm aktualisiert wird.
Implementierung
public function get usePhasedInstantiation():Boolean
public function set usePhasedInstantiation(value:Boolean):void
invalidateDisplayList | () | Methode |
public function invalidateDisplayList(obj:ILayoutManagerClient):void
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Wird bei Änderung einer Komponente aufgerufen, die eine Änderung von Layout und/oder Grafiken erfordert. In diesem Fall muss der Layoutalgorithmus der Komponente ausgeführt werden, auch wenn sich die Größe der Komponente nicht geändert hat. Dies ist beispielsweise der Fall, wenn eine neue untergeordnete Komponente hinzugefügt, eine Stileigenschaft geändert oder die Größe der Komponente durch die übergeordnete Komponente geändert wurde.
Parameter
obj:ILayoutManagerClient — Das geänderte Objekt.
|
invalidateProperties | () | Methode |
public function invalidateProperties(obj:ILayoutManagerClient):void
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Fügt ein Objekt der Liste von Komponenten hinzu, deren validateProperties()
-Methode aufgerufen werden muss. Eine Komponente sollte diese Methode bei der Änderung einer Eigenschaft aufrufen. Normalerweise speichert eine Methode zum Festlegen einer Eigenschaft einen neuen Wert in einer temporären Variable und ruft die invalidateProperties()
-Methode auf, sodass später die validateProperties()
- und die commitProperties()
-Methode aufgerufen wird, wenn der neue Wert auf die Komponente und/oder deren untergeordnete Komponenten angewendet wird. Der Vorteil dieser Strategie ist, dass oft mehrere Eigenschaften gleichzeitig geändert werden und die Eigenschaften miteinander interagieren, bei der Anwendung den gleichen Code wiederholen oder in einer bestimmten Reihenfolge erneut angewendet werden müssen. Mit dieser Strategie können neue Eigenschaftswerte am effizientesten angewendet werden.
Parameter
obj:ILayoutManagerClient — Das Objekt, dessen Eigenschaft geändert wurde.
|
invalidateSize | () | Methode |
public function invalidateSize(obj:ILayoutManagerClient):void
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Fügt ein Objekt der Liste von Komponenten hinzu, deren validateSize()
-Methode aufgerufen werden muss. Wird aufgerufen, wenn die Größe eines Objekts geändert wird.
Es gibt zwei Gründe für die Änderung der Größe eines Objekts:
- Der Inhalt des Objekts ändert sich. Beispielsweise ändert sich die Größe einer Schaltfläche, wenn sich ihre
label
ändert. - Ein Skript ändert eine der folgenden Eigenschaften explizit:
minWidth
,minHeight
,explicitWidth
,explicitHeight
,maxWidth
odermaxHeight
.
Im ersten Fall müssen die Maße des Objekts neu berechnet werden Im zweiten Fall müssen die Maße des Objekts nicht neu berechnet werden, da die neue Größe des Objekts bekannt ist. Das übergeordnete Objekt muss jedoch neu gemessen und das Layout muss neu festgelegt werden.
Parameter
obj:ILayoutManagerClient — Das Objekt, dessen Größe geändert wurde.
|
isInvalid | () | Methode |
public function isInvalid():Boolean
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Gibt true
zurück, wenn Komponenten vorhanden sind, die validiert werden müssen. Gibt false
zurück, wenn alle Komponenten validiert wurden.
Boolean — Gibt true zurück, wenn Komponenten vorhanden sind, die validiert werden müssen. Gibt false zurück, wenn alle Komponenten validiert wurden.
|
validateClient | () | Methode |
public function validateClient(target:ILayoutManagerClient, skipDisplayList:Boolean = false):void
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Eigenschaftsänderungen werden in der Regel nicht sofort auf Komponenten angewendet. Stattdessen rufen die Komponenten eine der Invalidierungsmethoden des LayoutManagers auf und wenden die Eigenschaften später an. Die tatsächliche Eigenschaft, die Sie eingestellt haben, kann sofort abgerufen werden, wenn sie sich jedoch auf andere Eigenschaften in der Komponente, auf untergeordnete oder übergeordnete Komponenten auswirkt, werden diese nicht sofort aktualisiert.
Um sicherzustellen, dass die Werte aktualisiert werden, rufen Sie die validateClient()
-Methode auf. Sie aktualisiert die Eigenschaften aller Komponenten, deren Verschachtelungsstufe höher oder gleich der Zielkomponente ist, bevor das Steuerelement an den Benutzer zurückgegeben wird. Da dieser Aufruf viel Rechenleistung erfordert, sollten Sie diese Methode nur aufrufen, wenn sie benötigt wird.
Parameter
target:ILayoutManagerClient — Anhand der übergebenen Komponente wird geprüft, welche Komponenten validiert werden müssen. Für alle in dieser Komponente enthaltenen Komponenten wird die validateProperties() -, commitProperties() -, validateSize() -, measure() -, validateDisplayList() - und updateDisplayList() -Methode aufgerufen.
| |
skipDisplayList:Boolean (default = false ) — Bei true werden die validateDisplayList() - und die updateDisplayList() -Methode nicht aufgerufen.
|
validateNow | () | Methode |
public function validateNow():void
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Eigenschaftsänderungen werden in der Regel nicht sofort auf Komponenten angewendet. Stattdessen rufen die Komponenten eine der Invalidierungsmethoden des LayoutManagers auf und wenden die Eigenschaften später an. Die tatsächliche Eigenschaft, die Sie eingestellt haben, kann sofort abgerufen werden, wenn sie sich jedoch auf andere Eigenschaften in der Komponente, auf untergeordnete oder übergeordnete Komponenten auswirkt, werden diese nicht sofort aktualisiert. Um sicherzustellen, dass die Werte aktualisiert werden, rufen Sie die validateNow()
-Methode auf. Dadurch werden die Eigenschaften aller Komponenten vor der Rückgabe aktualisiert. Da dieser Aufruf viel Rechenleistung erfordert, sollten Sie diese Methode nur aufrufen, wenn sie benötigt wird.
Tue Jun 12 2018, 10:04 AM Z