flex组合框箭头自定义图像

时间:2010-07-20 09:06:29

标签: flex actionscript-3 skinning flex3

在我的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。我需要更换箭头图像。 我做错了吗?

2 个答案:

答案 0 :(得分:0)

您可以创建自定义皮肤,并将ComboBox的skinupSkindownSkinoverSkin 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();