Отредактированный ответ, основанный на этом комментарии:
Извините за медлительность, чтобы вернуться к этой теме.Мое намерение состояло в том, чтобы иметь некоторые элементы интерфейса (кнопки и тому подобное), которые были пропущены в некоторых сборках и включены в другие.Мой текущий обходной путь - просто установить свойство visible компонента на определенную компилятором логическую константу - это грубо, но это работает.Есть мысли о лучшем способе?- Крис Китчинг 20 сентября в 14: 40
Я думаю, что вы могли бы использовать отложенную инициализацию flex, чтобы контролировать, какие компоненты создаются и добавляются в ваш родительский компонент - это может быть немноговопреки идее MXML, но я думаю, что это возможно.
Вот небольшой опыт по ручной инициализации отложенных компонентов (для компонентов spark и mx):
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7aee.html
Flex3
Если вы используете Flex 3, вы можете переопределить метод createComponentsFromDescriptors()
и получить доступ к свойству childDescriptors
, чтобы точно определить, какие дочерние компоненты MXML будут созданы.
Создание отложенных компонентов * В статье 1020 * показано, как получить информацию о компоненте MXML из дескриптора.Вы можете использовать это поведение, чтобы определить, какие компоненты должны или не должны создаваться для текущей сборки.
Ссылка на класс для UIComponentDescriptor
: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIComponentDescriptor.html
Flex 4
Во Flex 4 это немного менее понятно - все компоненты MXML будут созданы из их дескрипторов (нет свойства childDescriptors
, только экземпляр mxmlContentFactory
, который создаст все дочерние элементы).
Два варианта управления отображением компонентов MXML могут быть следующими:
Переопределить метод createDeferredContent()
и инициализировать дочерние компоненты с помощью mxmlContentFactor, но удалить элементы из возвращенного массива перед установкой mxmlContent.свойство (которое добавляет их в список отображения).
Реализация компонента шаблона, который точно определяет, какой тип компонентов разрешен в качестве дочерних, и только инициализирует соответствующие дочерние элементы для текущего типа сборки..
Вот пример создания компонента шаблона следующим образом: Использование IDeferred Экземпляр в компоненте шаблона.
Надеюсь, это даст вам возможность подумать, и, надеюсь, это не слишком сложно:)
Оригинальный ответ:
Короткий ответ: вы не можете использовать условную компиляцию для тегов MXML.Все теги MXML будут скомпилированы в компонент.
Каковы ваши цели в использовании условного MXML?
Пытаетесь ли вы включать / исключать классы на основе свойств компилятора, но при этом сохраняетекраткие объявления MXML?то есть не нужно определять все в actionScript.
Имея немного больше информации, мы могли бы найти приемлемую альтернативу:)