2012-08-17 26 views
1

我試圖使用FXG圖像作爲也包含標題的按鈕的圖標。我FXG文件位於資源/ SpeakerIcon.fxg我試圖使用看起來像這樣在我的MXML文件:如何使用FXG作爲MX:按鈕圖標

 <mx:Button id="audioButton" label="Audio" 
        .... 
        icon="{resources.SpeakerIcon}"/> 

當我嘗試使用此我得到「類型錯誤:錯誤#1034:類型強制失敗:不能將資源:: SpeakerIcon @ 41fa0e1轉換爲mx.core.IFlexDisplayObject。「我的研究表明FXG文件應該是s:實現IFlexDisplayObject http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/primitives/Graphic.html的圖形。

我錯過了什麼簡單的東西?

回答

3

<s:Graphics/>對象與FXG文檔中的<Graphics/>標記不同。

<s:Graphics/>是Spark原始形狀組件的基類(如<s:Rect/>)。這些並不像FXG那樣輕巧。因此,它們沒有實現IFlexDisplayObject接口(如@Flextras剛剛發佈:)

FXG資產可以在你的Flex代碼,這在技術上意味着FXG資產實現IVisualElement接口被視爲SpriteVisualElement

如果可以,請使用Spark <s:Button/>類而不是mx。我不認爲<mx:Button/>適用於FXG。

+0

+1爲'圖形'描述。如果他使用s:Button而不是mx:Button,他可能必須創建一個自定義按鈕外觀,以將該圖像顯示爲該按鈕的一部分。我不認爲火花Button允許按照MX按鈕相同的方式顯示圖標。 – JeffryHouser 2012-08-17 01:28:01

+1

@ www.Flextras.com':Button'有一個[圖標](http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/spark/components/supportClasses/ButtonBase.html#style:圖標)風格,因爲Flex 4.5:不需要自定義皮膚。 – RIAstar 2012-08-17 08:21:08

+0

@RIAstar太棒了;我一定錯過了那個加法。 – JeffryHouser 2012-08-17 12:26:24

1

對於FXG,您應該使用Sprite或[在您的情況下]使用SpriteVisualElement。我不相信這些類中的任何一個都實現了IFlexDisplayObject。

您可以考慮將您的FXG元素從我的Apache Flex白板中包裝到此FXGImage類中。 FXGImage擴展了IFlexDisplayObject的UIcomponent。

這是直接鏈接到source code for the class

+0

鏈接不起作用了。 – Miral 2015-02-27 22:28:42