如何在spark下拉列表中应用图像状态

时间:2011-05-09 11:29:48

标签: flex actionscript-3 drop-down-menu skins

我有一个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>

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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'},
]);

它将作为data属性传递到您的itemRenderer中,然后您可以使用它们来设置itemRenderer的样式。

由于您正在嵌入图像而不是仅仅链接到它们;你需要做的比我在上面的例子中使用的字符串略多。