[英]flex combobox arrow custom image
在我的Flex AIR应用程序中,我必须使用自定义箭头图标来自定义组合框。 我获得了更改其颜色的属性,但是没有获得更改图标本身的任何属性。 谷歌搜索后,我获得了一些组合框外观的链接,但它们适用于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>
它对我不起作用:(它将图像应用于整个组合框。我需要替换箭头图像。我做错什么了吗?
默认情况下, ComboBoxArrowSkin
绘制整个ComboBox。 图标本身没有样式属性-您必须编写自己的皮肤。 通读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();
您可以创建一个自定义外观并将ComboBox的skin
, upSkin
, downSkin
和overSkin
样式属性设置为该类。 默认值为ComboBoxArrowSkin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.