Привет, я хотел бы изменить видимость определенной части скина во время выполнения, но я не знаю, как это сделать.
Flex 4 изменить значение части скина
Ответы (2)
Что вы имеете в виду под "достичь"?
И класс компонента, и класс темы оформления имеют ссылку на часть темы оформления, используя имя этого компонента. Как я обычно скрываю часть скина во время выполнения, использую этот процесс:
1) Создайте новое состояние кожи; что-то вроде "skinPartHidden"
2) В классе Компонент; создайте свойство skinPartVisible. При изменении значения свойства; вызовите метод invalidateSkinState(). Это приведет к запуску getCurrentSkinState() во время следующего события рендеринга.
3) В методе get getCurrentSkinState(); используйте значение этого свойства, чтобы установить состояние скина в новое состояние скина skinPartHidden. Что-то вроде его:
if(skinPartVisible == false){
return "skinPartHidden";
}
4) В классе скинов; переключать видимость части темы оформления в зависимости от состояния темы оформления с помощью синтаксиса состояния MXML. Что-то вроде этого:
visible.skinPartHidden="true"
Это зависит от того, какую часть вы хотите скрыть/показать. Если вы говорите о какой-то специфичной для скина графике (которая не представлена как объявление [SkinPart]
в хост-компоненте), вы можете реализовать две стратегии:
- Ваша логика скрытия/отображения является лишь частью представления, но не функциональностью компонента. В этом случае вам следует расширить свой скин и поместить туда логику скрытия/отображения. Вы можете использовать привязку данных свойств
hostComponent
. - Ваша логика скрытия/отображения добавляет некоторые новые функции. Расширьте свой компонент и введите новое состояние просмотра или объявите там целевую часть скина и измените видимость в компоненте при изменении какого-либо свойства. В этом случае, возможно, вам придется изменить скин тоже.
Для изменения видимости известной заявленной части скина можно использовать вышеперечисленные модификации стратегий. Во второй стратегии вам не нужно объявлять часть скина :)