Flex在运行时更改自定义外观的值

时间:2011-03-05 16:08:30

标签: flex flex4 skinning

我为我的Flex应用程序构建了一个基本主题。我想添加对其他预定义主题的支持。默认情况下,应用程序有一个主题,我希望它在用户从下拉列表中选择主题时进行更改。这可以通过使用styleManager加载swf文件来完成。但是,所有皮肤都有硬编码的颜色。因此,为了实现这一点,我将不得不复制皮肤并更改颜色的值。

有更好的方法吗?我可以根据用户选择动态更改颜色值吗?

2 个答案:

答案 0 :(得分:3)

最好的方法是将所有硬编码颜色从皮肤移动到css。 您必须更新自定义皮肤才能利用它。

所以如果你有一个<SolidStoke color="0xff0000" /> 您需要将其替换为<SolidStroke color="{getStyle('yourCssPropertyName')} />

答案 1 :(得分:2)

另一种方法是编写皮肤,使它们具有对主机组件的引用(参见[1])。然后扩展当前的主机组件,使它们具有您要指定的每种颜色的属性(例如,不使用,而是使用borderColor和fillColor作为新属性)。

老实说,弗洛里安的回答可能是更好的方法。

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