Пакет | mx.managers |
Интерфейс | public interface ILayoutManager extends IEventDispatcher |
Средство реализации | LayoutManager |
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Каждая фаза отличается от остальных, и все UIComponents одной фазы обрабатываются до перехода к следующей фазе. В течение обработки UIComponents в фазе могут возникнуть запросы на повторную обработку UIComponents некоторой фазой. Эти запросы помещаются в очередь и обрабатываются только в течение следующего выполнения фазы.
Фаза commit начинается с вызова validateProperties()
, просматривающего список объектов (отсортированных в обратном порядке по уровню вложенности) путем вызова метода метод validateProperties()
.
Объекты в списке обрабатываются в обратном порядке вложенности начиная с наименее глубоко вложенного объекта. Также это можно обозначить как нисходящий порядок или порядок движения извне.
Эта фаза позволяет компонентам, содержимое которых зависит от параметров настройки свойств, быть сконфигурированными до фаз измерения и макета. Иногда ради повышения производительности метод установщика свойства компонента не выполняет всю работу по обновлению до нового значения свойства. Вместо этого установщик свойства вызывает метод invalidateProperties()
, что приостанавливает работу до выполнения этой фазы. Это предотвращает выполнение лишней работы при многократной установке свойства.
Фаза measurement начинается с вызова validateSize()
, просматривающего список объектов (отсортированных по уровню вложенности) путем вызова метода
validateSize()
каждого из объектов для определения, изменился ли размер объекта.
Если метод
invalidateSize()
объекта был вызван ранее, то затем вызывается метод validateSize()
. Если размер или позиция объекта были изменены в результате вызова validateSize()
, то вызывается метод
invalidateDisplayList()
объекта, добавляя, таким образом, объект к очереди обработки для следующего выполнения фазы макета. Кроме того, вышестоящий элемент объекта отмечается для фаз измерения и макета путем вызова
invalidateSize()
и
invalidateDisplayList()
соответственно.
Объекты в списке обрабатываются в порядке вложенности начиная с наиболее глубоко вложенного объекта. Также это можно обозначить как восходящий порядок или порядок движения изнутри.
Фаза layout начинается с вызова метода validateDisplayList()
, просматривающего список объектов (отсортированных в обратном порядке по уровню вложенности) путем вызова метода
validateDisplayList()
каждого из объектов для запроса объекта измерить размер и установить позицию всех компонентов, содержащихся в нем (т. е. нижестоящих элементов).
Если метод
invalidateDisplayList()
объекта был вызван ранее, то затем для объекта вызывается метод validateDisplayList()
.
Объекты в списке обрабатываются в обратном порядке вложенности начиная с наименее глубоко вложенного объекта. Также это можно обозначить как нисходящий порядок или порядок движения извне.
Как правило, компоненты не перезаписывают методы validateProperties()
, validateSize()
и validateDisplayList()
. В случае UIComponents большинство компонентов перезаписывают методы commitProperties()
, measure()
или updateDisplayList()
, которые вызываются методами validateProperties()
, validateSize()
и validateDisplayList()
соответственно.
При запуске приложения одиночный экземпляр LayoutManager создается и сохраняется в свойстве UIComponent.layoutManager
. Ожидается, что все компоненты будут использовать этот экземпляр. При отсутствии доступа к объекту UIComponent доступ к LayoutManager можно получить также с помощью статического метода LayoutManager.getInstance()
.
Свойство | Определено | ||
---|---|---|---|
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()
всех компонентов, пока все компоненты не будут проверены, а затем экран будет снова обновлен. Если при проверке одной фазы будет аннулирована более ранняя фаза, то LayoutManager начнет сначала. Этот процесс становится более эффективным при большом количестве созданных и инициализированных компонентов. Инфраструктура ответственна за установку этого свойства.
При значении false
все три фазы выполняются до обновления экрана.
Реализация
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()
. Вызывается при изменении размера объекта.
Размер объекта может измениться по двум причинам.
- Изменение содержимого объекта. Например, размер кнопки изменяется при изменении ее
label
. - Сценарий изменяет явно одно из следующих свойств:
minWidth
,minHeight
,explicitWidth
,explicitHeight
,maxWidth
илиmaxHeight
.
При возникновении первого условия необходимо повторно вычислить измерения для объекта. При возникновении второго условия отсутствует необходимость в повторном вычислении измерений, т.к. новый размер объекта известен. Однако необходимо повторно измерить и повторно создать макет для вышестоящего по отношению к объекту элемента.
Параметры
obj:ILayoutManagerClient — Объект, размер которого изменился.
|
isInvalid | () | метод |
public function isInvalid():Boolean
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Возвращает значение true
при наличии компонентов, требующих проверки; значение false
, если все компоненты были проверены.
Boolean — Возвращает значение true при наличии компонентов, требующих проверки; значение false , если все компоненты были проверены.
|
validateClient | () | метод |
public function validateClient(target:ILayoutManagerClient, skipDisplayList:Boolean = false):void
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
При изменении свойств компоненты, как правило, не применяют эти изменения немедленно. Вместо этого компоненты обычно вызывают один из методов invalidate 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 |
При изменении свойств компоненты, как правило, не применяют эти изменения немедленно. Вместо этого компоненты обычно вызывают один из методов invalidate LayoutManager и применяют свойства позднее. Фактическое свойство, которое было установлено, может быть считано немедленно, но если свойство воздействует на другие свойства в компоненте, его нижестоящих или вышестоящих элементах, то эти свойства могут не быть обновлены немедленно. Для проверки обновления значения, можно вызвать метод validateNow()
. Он обновляет все свойства во всех компонентах перед возвратом. Этот метод следует вызывать только при необходимости, т.к. его вызов приводит к большим объемам вычислений.
Tue Jun 12 2018, 11:34 AM Z