2010-07-20 61 views
1

在我的Flex AIR应用程序中,我必须使用自定义箭头图标来自定义组合框。我得到的属性来改变它的颜色,但没有得到任何财产来改变图标本身。谷歌搜索后,我得到了一些皮肤组合框的链接,但它们是用于FLASH CS4,但我在Flex上。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> 

它不是为我工作:( 它在整个组合框应用的图像,我需要更换箭头图像 我做任何事情。错了吗?

回答

0

您可以创建一个自定义皮肤,并设置ComboB的skinupSkindownSkinoverSkinstyle attributes公牛到那个阶级。默认值为ComboBoxArrowSkin

+0

请参阅添加的代码。让我知道我错在哪里? – gauravgr8 2010-07-21 07:03:41

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();