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