Apache flex 如何在spark dropdownlist中应用图像状态

Apache flex 如何在spark dropdownlist中应用图像状态,apache-flex,actionscript-3,drop-down-menu,skins,Apache Flex,Actionscript 3,Drop Down Menu,Skins,我有一个spark dropdownlist,我在上面应用了自定义皮肤来显示图像,而不是标签 <s:DropDownList id="id_cbLineType" skinClass="assets.skins.SkinDropDownImageList" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer" width="32

我有一个spark dropdownlist,我在上面应用了自定义皮肤来显示图像,而不是标签

<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>
我已经应用自定义皮肤来显示图像。现在我想在这些图像上显示不同的向上、向上、向下和禁用状态的图像。
有什么方法可以做到这一点吗?

您需要创建一个具有这些状态的自定义项目渲染器并显示图像。您不需要使用数据提供程序中的图像,图像数据本身、项目渲染器将完成其余操作。

您应该能够在项目渲染器中实现向上/向上/向下/禁用状态。您需要传入所有图像,因此可能需要更改数据提供程序。我会用ActionScript而不是MXML创建它。我也会使用对象而不是图像。您可以创建自己的自定义对象

但在概念上是这样的:

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的样式

因为你是嵌入图像而不是仅仅链接到它们;您需要做的事情比我在上面的示例中使用的字符串稍微多一些