2010-07-20 33 views
1

在我的Flex AIR應用程序中,我必須使用自定義箭頭圖標來自定義組合框。我得到的屬性來改變它的顏色,但沒有得到任何財產來改變圖標本身。谷歌搜索後,我得到了一些皮膚組合框的鏈接,但它們是用於FLASH CS4,但我在Flex上。flex組合框箭頭自定義圖像

沒有得到任何解決方案。請幫忙。

在此先感謝。

這裏是代碼:

<?xml version="1.0" encoding="utf-8"?><mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
<mx:Style> 
    ComboBox { 
     up-skin : Embed(source="Pulldown_def.png"); 
     down-skin : Embed(source="Pulldown_def.png"); 
     over-skin : Embed(source="Pulldown_def.png");  
    } 
</mx:Style> 
<mx:Array id="dp"> 
    <mx:Object label="test1" /> 
    <mx:Object label="test2" /> 
</mx:Array> 
<mx:ComboBox id="cbx" x="51" y="43" dataProvider="{dp}" labelField="label" ></mx:ComboBox> 

它不是爲我工作:( 它在整個組合框應用的圖像,我需要更換箭頭圖像 我做任何事情。錯了嗎?

回答

0

您可以創建一個自定義皮膚,並設置ComboB的skinupSkindownSkinoverSkinstyle attributes公牛到那個階級。默認值爲ComboBoxArrowSkin

+0

請參閱添加的代碼。讓我知道我錯在哪裏? – gauravgr8 2010-07-21 07:03:41

0

默認情況下,ComboBoxArrowSkin繪製整個組合框。圖標本身沒有樣式屬性 - 您必須編寫自己的皮膚。通讀ComboBox.as和ComboBoxArrowSkin.as,你會看到那裏發生了什麼。它很醜。我會考慮從ComboBoxArrowSkin中派生出我自己的班級,並自己調整箭頭繪圖。它發生在updateDisplayList()的末尾:

// Draw the triangle. 
g.beginFill(arrowColor); 
g.moveTo(w - 11.5, h/2 + 3); 
g.lineTo(w - 15, h/2 - 2); 
g.lineTo(w - 8, h/2 - 2); 
g.lineTo(w - 11.5, h/2 + 3); 
g.endFill();