Flex 4 изменить значение части скина

Привет, я хотел бы изменить видимость определенной части скина во время выполнения, но я не знаю, как это сделать.


person Yordan Yanakiev    schedule 24.05.2011    source источник


Ответы (2)


Что вы имеете в виду под "достичь"?

И класс компонента, и класс темы оформления имеют ссылку на часть темы оформления, используя имя этого компонента. Как я обычно скрываю часть скина во время выполнения, использую этот процесс:

1) Создайте новое состояние кожи; что-то вроде "skinPartHidden"

2) В классе Компонент; создайте свойство skinPartVisible. При изменении значения свойства; вызовите метод invalidateSkinState(). Это приведет к запуску getCurrentSkinState() во время следующего события рендеринга.

3) В методе get getCurrentSkinState(); используйте значение этого свойства, чтобы установить состояние скина в новое состояние скина skinPartHidden. Что-то вроде его:

if(skinPartVisible == false){
 return "skinPartHidden";
}

4) В классе скинов; переключать видимость части темы оформления в зависимости от состояния темы оформления с помощью синтаксиса состояния MXML. Что-то вроде этого:

visible.skinPartHidden="true"

person JeffryHouser    schedule 24.05.2011
comment
Большое спасибо, Джеффри Хаузер. Ваше решение действительно указывает мне на ответы, которые я искал. Теперь все выглядит намного яснее для меня :) Еще раз спасибо. - person Yordan Yanakiev; 25.05.2011

Это зависит от того, какую часть вы хотите скрыть/показать. Если вы говорите о какой-то специфичной для скина графике (которая не представлена ​​как объявление [SkinPart] в хост-компоненте), вы можете реализовать две стратегии:

  • Ваша логика скрытия/отображения является лишь частью представления, но не функциональностью компонента. В этом случае вам следует расширить свой скин и поместить туда логику скрытия/отображения. Вы можете использовать привязку данных свойств hostComponent.
  • Ваша логика скрытия/отображения добавляет некоторые новые функции. Расширьте свой компонент и введите новое состояние просмотра или объявите там целевую часть скина и измените видимость в компоненте при изменении какого-либо свойства. В этом случае, возможно, вам придется изменить скин тоже.

Для изменения видимости известной заявленной части скина можно использовать вышеперечисленные модификации стратегий. Во второй стратегии вам не нужно объявлять часть скина :)

person Constantiner    schedule 24.05.2011
comment
При создании скинов MXML; Adobe не рекомендует расширять скины. Инструментарий не поддерживает это; включая Flash Catalyst и Flash Builder. - person JeffryHouser; 24.05.2011
comment
Извините, что выразился не так ясно. Под расширением скина я имею в виду просто скопировать/вставить оригинальный скин, а затем изменить его методологию :) - person Constantiner; 24.05.2011
comment
Спасибо, Константин, за ваш добрый ответ, вы также указываете мне на то, что мне пришлось прочитать, чтобы завершить несколько вещей. Спасибо. - person Yordan Yanakiev; 25.05.2011