Гибкое изменение значений пользовательского скина во время выполнения

Я создал базовую тему для своего приложения Flex. Я хотел бы добавить поддержку дополнительных предопределенных тем. По умолчанию в приложении есть тема, и я бы хотел, чтобы она изменялась, когда пользователь выбирает тему из раскрывающегося списка. Это можно сделать, загрузив SWF-файл с помощью styleManager. Однако во всех скинах жестко запрограммированы цвета. Итак, чтобы добиться этого, мне пришлось бы продублировать скины и изменить значение цветов.

Есть ли лучший способ сделать это? Могу ли я просто создать скин, который будет динамически изменять значения цвета в зависимости от выбора пользователя?


person Nish    schedule 05.03.2011    source источник


Ответы (2)


Лучший способ - переместить все жестко запрограммированные цвета из кожи в CSS. Вам нужно будет обновить свои собственные скины, чтобы воспользоваться этим.

поэтому, если у вас есть <SolidStoke color="0xff0000" />, вам нужно заменить его на <SolidStroke color="{getStyle('yourCssPropertyName')} />

person Florian F    schedule 05.03.2011

Другой способ сделать это - написать свои скины так, чтобы у них были ссылки на их компоненты хоста (см. [1]). Затем вы расширяете текущие компоненты хоста, чтобы они имели свойства для каждого цвета, который вы хотите указать (например, вместо использования вы должны использовать с borderColor и fillColor в качестве новых свойств).

Честно говоря, ответ Флориана, вероятно, лучший вариант.

[1] - http://www.adobe.com/devnet/flex/quickstarts/skinning_components.html#host

person Brian    schedule 05.03.2011