2011-05-09 61 views
1

我有一个火花下拉列表,我已经应用了自定义外观以在其中显示图像而不是标签。如何在火花下拉列表中应用图像状态

<s:DropDownList id="id_cbLineType" 
       skinClass="assets.skins.SkinDropDownImageList" 
       itemRenderer="spark.skins.spark.DefaultComplexItemRenderer" 
       width="32" 
       selectedIndex="0" 
       borderAlpha="1" 
       change="OnLineTypeChange(event)"> 
    <s:dataProvider> 
     <s:ArrayList> 
      <mx:Image source="@Embed('assets/images/mainToolbars/Straight.png')" /> 
      <mx:Image source="@Embed('assets/images/mainToolbars/Curved.png')" /> 
      <mx:Image source="@Embed('assets/images/mainToolbars/Angular.png')" /> 
     </s:ArrayList> 
    </s:dataProvider> 
</s:DropDownList> 

我已经应用自定义皮肤来显示图像。现在我想在这些图像上显示不同的图像,用于放大,缩小和禁用状态。 有没有办法做到这一点?

回答

0

您需要创建具有这些状态的自定义项目渲染器并显示图像。您不需要使用数据提供程序中的图像,图像数据本身,项目渲染程序就可以完成剩下的工作。

0

你应该能够在你的itemRenderer中实现up/over/down/disabled状态。你需要传入所有的图像,所以你可能不得不改变你的dataProvider。我会用ActionScript代替MXML创建它。我也会使用一个对象来代替Image。您可以创建自己的自定义对象。

但概念是这样的:

public var dp : ArrayCollection = new ArrayCollection([ 
{upImage='assets/images/mainToolbars/Straight.png',downImage=,'assets/images/mainToolbars/Straight.png',disabledImage='assets/images/mainToolbars/Straight.png',overImage='assets/images/mainToolbars/Straight.png'}, 
]); 

将被传递到您的itemRenderer作为数据属性,然后你可以用它们风格你的itemRenderer。

由于您在嵌入图片而不是仅链接到图片;你必须做比上面示例中使用的字符串略多的字符串。