1

我有一个 spark 下拉列表,并在其上应用了自定义皮肤以在其中显示图像而不是标签。

<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>

我已经应用了自定义皮肤来显示图像。现在我想在这些图像上显示不同的图像以显示向上、过度、向下和禁用状态。有没有办法做到这一点?

4

2 回答 2

0

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

于 2011-05-09T12:21:33.200 回答
0

您应该能够在 itemRenderer 中实现 up/over/down/disabled 状态。您需要传入所有图像,因此您可能必须更改您的 dataProvider。我会在 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 的样式。

由于您正在嵌入图像而不是仅仅链接到它们;你必须做的比我在上面的示例中使用的字符串稍微多一点。

于 2011-05-09T12:22:05.967 回答