在我的Flex AIR应用程序中,我必须使用自定义箭头图标自定义Combobox。我得到了属性来改变它的颜色,但没有得到任何属性来改变图标本身。在谷歌搜索后,我得到了一些皮肤组合框的链接,但它们用于FLASH CS4,但我在Flex上。
没有得到任何解决方案。请帮忙。
提前致谢。
以下是代码:
<?xml version="1.0" encoding="utf-8"?><mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Style>
ComboBox {
up-skin : Embed(source="Pulldown_def.png");
down-skin : Embed(source="Pulldown_def.png");
over-skin : Embed(source="Pulldown_def.png");
}
</mx:Style>
<mx:Array id="dp">
<mx:Object label="test1" />
<mx:Object label="test2" />
</mx:Array>
<mx:ComboBox id="cbx" x="51" y="43" dataProvider="{dp}" labelField="label" ></mx:ComboBox>
这对我不起作用:( 它将图像应用于整个Combobox。我需要更换箭头图像。 我做错了吗?
答案 0 :(得分:0)
您可以创建自定义皮肤,并将ComboBox的skin
,upSkin
,downSkin
和overSkin
style attributes设置为该类。默认值为ComboBoxArrowSkin
答案 1 :(得分:0)
默认情况下,ComboBoxArrowSkin
绘制整个组合框。图标本身没有样式属性 - 您必须自己编写皮肤。阅读ComboBox.as和ComboBoxArrowSkin.as,你就会看到那里发生了什么。这太丑了。我会考虑从ComboBoxArrowSkin
派生我自己的班级并自己调整箭头图。它发生在updateDisplayList()
:
// Draw the triangle.
g.beginFill(arrowColor);
g.moveTo(w - 11.5, h / 2 + 3);
g.lineTo(w - 15, h / 2 - 2);
g.lineTo(w - 8, h / 2 - 2);
g.lineTo(w - 11.5, h / 2 + 3);
g.endFill();