2011-05-09 60 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。

由於您在嵌入圖片而不是僅鏈接到圖片;你必須做比上面示例中使用的字符串略多的字符串。