1

我正在尝试使用 FXG 图像作为还包含标题的按钮的图标。我的 FXG 文件位于 resources/SpeakerIcon.fxg 中,我尝试的用法在我的 mxml 文件中如下所示:

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

当我尝试使用它时,我得到“TypeError:错误#1034:类型强制失败:无法将资源::SpeakerIcon@41fa0e1 转换为 mx.core.IFlexDisplayObject。” 我的研究表明,FXG 文件应该是 s:Graphics,它确实实现了 IFlexDisplayObject http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/primitives/Graphic.html

我错过了什么简单的事情?

4

2 回答 2

3

该对象与 FXG 文档中的标签<s:Graphics/>不同。<Graphics/>

<s:Graphics/>是 Spark 原始形状组件(如<s:Rect/>)的基类。它们不像 FXG 同类产品那样轻巧。因此,他们没有实现IFlexDisplayObject接口(正如@Flextras 刚刚发布的那样:)

FXG 资产可以被视为SpriteVisualElement在您的 Flex 代码中,这在技术上意味着 FXG 资产实现了IVisualElement接口。

如果可以,请使用 Spark<s:Button/>类而不是 mx。我认为不适<mx:Button/>用于 FXG。

于 2012-08-17T01:25:38.810 回答
1

对于 FXG,您应该使用 Sprite 或 [在您的情况下] SpriteVisualElement。我不相信这些类中的任何一个都实现了 IFlexDisplayObject。

您可以考虑将您的 FXG 元素包装在我的 Apache Flex 白板上的这个FXGImage类中。FXGImage 扩展了 UIcomponent,它是一个 IFlexDisplayObject。

这是该类源代码的直接链接。

于 2012-08-17T01:23:24.463 回答