Пакет | mx.core |
Класс | public class ComponentDescriptor |
Наследование | ComponentDescriptor Object |
Подклассы | UIComponentDescriptor |
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Большинство тегов в файле MXML описывает дерево объектов UIComponent. Например, тег <mx:Application>
представляет объект UIComponent, а все нижестоящие контейнеры и элементы управления являются объектами UIComponent.
Компилятор MXML компилирует все теги MXML в экземпляр UIComponentDescriptor. А именно, компилятор MXML автоматически создает структуру данных ActionScript, которая является деревом объектов UIComponentDescriptor.
Во время выполнения метод createComponentsFromDescriptors()
класса Container использует информацию в объектах UIComponentDescriptor в массиве контейнера childDescriptors
для создания фактических объектов UIComponent, которые являются нижестоящими элементами контейнера, а также нижестоящих элементов более низкого уровня. В зависимости от значения свойства контейнера creationPolicy
, нижестоящие элементы могут быть созданы во время запуска приложения, когда часть компонента становится видимой или когда разработчик приложений вручную вызывает метод createComponentsFromDescriptors()
.
Как правило, самостоятельное создание экземпляров ComponentDescriptor или UIComponentDescriptor не требуется; получение доступа к экземплярам, автоматически созданным компилятором MXML, осуществляется посредством массива класса Container childDescriptors
.
Связанные элементы API
mx.core.Container.childDescriptors
mx.core.Container.creationPolicy
mx.core.Container.createComponentsFromDescriptors()
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
document : Object
Ссылка на Object документа, в котором требуется создать компонент. | ComponentDescriptor | ||
events : Object
Object, содержащий пары «имя – значение» для обработчиков событий компонента, как указано в MXML. | ComponentDescriptor | ||
id : String
Идентификатор для компонента, как определено в MXML. | ComponentDescriptor | ||
properties : Object [только для чтения]
Object, содержащий пары «имя – значение» для свойств компонента, как указано в MXML. | ComponentDescriptor | ||
propertiesFactory : Function
Функция, возвращающая объект, который содержит пары «имя – значение» для свойств компонента, указанных в MXML. | ComponentDescriptor | ||
type : Class
Класс компонента, как определено в MXML. | ComponentDescriptor |
Метод | Определено | ||
---|---|---|---|
ComponentDescriptor(descriptorProperties:Object)
Конструктор. | ComponentDescriptor | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Признает недействительным кэшируемое свойство properties. | ComponentDescriptor | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строку «ComponentDescriptor_» и значение свойства id. | ComponentDescriptor | ||
Возвращает элементарное значение заданного объекта. | Object |
document | свойство |
public var document:Object
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Ссылка на Object документа, в котором требуется создать компонент.
Связанные элементы API
events | свойство |
public var events:Object
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Object, содержащий пары «имя – значение» для обработчиков событий компонента, как указано в MXML.
Например, при вводе
<mx:DataGrid id="dg" initialize="fetchData(); initDataGrid();" change="changeHandler(event);"/>
свойством дескриптора events
является объект
{ initialize: "__dg_initialize", change: "__dg_change" }
Свойством event
является null
, если для компонента не указаны обработчики событий MXML.
Строки __dg_initialize
и __dg_change
являются именами методов обработчика события, автоматически создаваемые компилятором MXML. Тело этих методов содержит операторы ActionScript, определенные как значения атрибутов события. Например, автоматически созданным обработчиком initialize
является
public function __dg_initialize(event:mx.events.FlexEvent):void { fetchData(); initDataGrid(); }
Автоматически созданные обработчики события не всегда будут определяться по имени; в будущей версии Flex могут произойти изменения.
Эти свойства используются методом контейнера createComponentsFromDescriptors()
для регистрации автоматически создаваемых обработчиков события с помощью метода addEventListener()
.
id | свойство |
public var id:String
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Идентификатор для компонента, как определено в MXML.
Например, при вводе
<mx:TextInput id="firstName" text="Enter your first name here"/>
свойством дескриптора id
является строка firstName
.
Свойство id
имеет значение null
, если идентификатор MXML указан для компонента.
Значение свойства id
становится именем общедоступной переменной в объекте документа MXML, автоматически созданной компилятором MXML. Значением этой переменной является ссылка на объект UIComponent, созданный из этого дескриптора. Это причина того, что можно, например, создать ссылку на элемент управления TextInput text
как firstName.text
из любого местоположения в документе, содержащем этот экземпляр TextInput.
Если свойство id
определено, и это не пустая строка, оно также становится свойством name
объекта DisplayObject. Если свойство id
не определено или является пустым, свойство объекта DisplayObject name
остается автоматически созданной строкой, например Button3
, какой она возвращается методом NameUtil.createUniqueName()
. Свойство name
используется при создании строки, возвращенной методом toString()
. Оно также может использоваться для нахождения компонента из его вышестоящего узла путем вызова getChildByName()
.
Связанные элементы API
properties | свойство |
properties:Object
[только для чтения] Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Object, содержащий пары «имя – значение» для свойств компонента, как указано в MXML.
Например, при вводе
<mx:TextInput width="150" text="Hello"/>
свойством дескриптора properties
является объект.
{ width: 150, text: "Hello" }
Свойство properties
имеет значение null
, если свойства MXML не указаны для компонента. В этом случае компонентом будут использоваться значения свойства по умолчанию.
Этот объект создается путем вызова функции, определенной свойством propertiesFactory
и кэшированной для последующего доступа. Однако когда Repeater создает несколько экземпляров компонента из того же дескриптора, новая копия объекта properties
должна создаваться для каждого экземпляра компонента; таким образом, они не используют совместно значения, которыми являются ссылки на массивы и объекты. Repeater выполняет это путем вызова на дескрипторе метода invalidateProperties()
.
Реализация
public function get properties():Object
Связанные элементы API
propertiesFactory | свойство |
public var propertiesFactory:Function
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Функция, возвращающая объект, который содержит пары «имя – значение» для свойств компонента, указанных в MXML.
Например, при вводе
<mx:TextInput width="150" text="Hello">
свойством дескриптора propertiesFactory
является функция:
function():Object { return { width: 150, text: "Hello" }; }
Свойство propertiesFactory
имеет значение null
, если свойства MXML не определены для компонента. В этом случае компонентом будут использоваться значения свойства по умолчанию.
Причина, по которой propertyFactory
является функцией, возвращающей объект, а не фактическим объектом состоит в том, чтобы позволить дереву объектов ComponentDescriptor выполнить поэтапное «раскрытие». Если бы все дескрипторы в дереве дескриптора для документа создавались при запуске, время запуска было бы больше.
Свойство properties
возвращает кэшируемый объект, который создан этой функцией фабрики.
Примечание. Обработчики событий, например click="doSomething();"
, отображаются в объекте events
, а не в объекте properties
.
Связанные элементы API
type | свойство |
public var type:Class
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Класс компонента, как определено в MXML.
Например, при вводе
<mx:TextInput/>
свойством дескриптора type
является классом mx.controls.TextInput.
Свойство никогда не имеет значение null
для объектов ComponentDescriptor, созданных компилятором MXML, потому что каждый тег MXML имеет имя тега, например mx:TextInput.
Сопоставление тега MXML и его соответствующим классом определено пространством имен XML и файлом «манифеста», если таковые имеются и связаны с этим пространством имен. Например, стандартное пространство имен Flex http://www.adobe.com/2006/mxml
представляемое префиксом mx: связано (в файле flex-config.xml) с файлом манифеста mxml-manifest.xml, и этот файл содержит тег
<component id="TextInput" class="mx.controls.TextInput"/>
, что соответствует имени тега mx:TextInput классу mx.controls.TextInput. Учтите, что использование файла манифеста способствует соотнесению компонентов в одном пространстве имен с классами в нескольких пакетах ActionScript.
ComponentDescriptor | () | Конструктор |
public function ComponentDescriptor(descriptorProperties:Object)
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Конструктор.
ПараметрыdescriptorProperties:Object — Object, содержащий пары «имя – значение» для свойств объекта ComponentDescriptor, например type , id , propertiesFactory и events .
|
invalidateProperties | () | метод |
public function invalidateProperties():void
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Признает недействительным кэшируемое свойство properties
. В следующий раз при чтении свойства properties
свойства повторно создаются из функции, определенной значением свойства propertiesFactory
.
toString | () | метод |
Tue Jun 12 2018, 11:34 AM Z