从Flex中的资源包中提取图标的问题

时间:2009-04-20 06:16:06

标签: flex resourcemanager

我在使用Flex中的资源包中获取图标时遇到问题。这是场景:

目录结构如下所示:

 -ResourceManagerTest
   -resources
     -icons
       -icon1.png
       -icon2.png
       -icons.properties
 -src
   -MyButton.as
   -ResourceManagerTest.mxml

在icons.properties中我有:

CIRCLE_FILLED=Embed("icon1.png")
CIRCLE_CONTOUR=Embed("icon2.png")

我想创建ToggleButtonBar,其按钮的图标从资源包中拉出。

以下是以编程方式创建的按钮的来源:

package
{
    import mx.resources.ResourceManager;

    public class MyButton extends Object
    {
    public var icon:Class;
    public function MyButton()
    {
        super();
        icon = ResourceManager.getInstance().getClass("icons", "CIRCLE_FILLED");
    }

}

}

这里是ResourceManagerTest,我定义了ToggleButtonBar:

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute"
creationComplete="onCreationComplete()">

<mx:Script>
    <![CDATA[
        [Bindable]
        public var dataProvider:Array;

        public function onCreationComplete():void {

            dataProvider = new Array();
            dataProvider.push(new MyButton());
            dataProvider.push(new MyButton());
            tgb.dataProvider = dataProvider;
        }

    ]]>
</mx:Script>


<mx:ToggleButtonBar id="tgb"/>

按钮确实出现,但没有任何图标。我究竟做错了什么?

2 个答案:

答案 0 :(得分:1)

首先,您似乎没有在构建中包含资源包。你可能需要像

这样的东西
<mx:Metadata>
        [ResourceBundle("RegistrationForm")]
</mx:Metadata> 
在MXML中

或只是

[ResourceBundle("RegistrationForm")]

位于班级的顶层

一旦你完成了这一点,请确保你有捆绑...尝试只添加一个字符串资源,看看你是否可以得到它。如果你有捆绑但它仍然无法正常播放具有不同路径的图标。它们可能与资源无关(没有玩它,我永远不会记住什么是相对的)。

答案 1 :(得分:1)

我发现有关如何在Flex 3中设置ResourceBundle的信息的最佳资源是Adobe的liveocs中的“Using Resources”。

[ResourceBundle("icons")]

除了包含资源包之外,还需要确保在编译时包含资源路径。阅读Adobe的文档以获取更多信息。