Проблема с извлечением значков из пакета ресурсов в Flex

У меня проблемы с получением значков из пакета ресурсов в 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"/>

Кнопки появляются, но без значков. Что я делаю неправильно?


person Community    schedule 20.04.2009    source источник


Ответы (2)


Во-первых, похоже, что вы не включаете пакет ресурсов в свою сборку. Вам, вероятно, понадобится что-то вроде

<mx:Metadata>
        [ResourceBundle("RegistrationForm")]
</mx:Metadata> 

в MXML или просто

[ResourceBundle("RegistrationForm")]

лучший в своем классе

Как только вы это сделаете, убедитесь, что у вас есть пакет ... попробуйте добавить только строковый ресурс и посмотрите, сможете ли вы его получить. Если у вас есть пакет, но он по-прежнему не работает, попробуйте разные пути для значков. Они могут не относиться к ресурсу (не играя с ним, я никогда не смогу вспомнить, что относительно чего).

person James Hay    schedule 20.04.2009
comment
Если вам нравится ответ, вы должны проголосовать за него, и если он решит проблему, вы должны отметить его как правильный. - person James Hay; 20.04.2009
comment
Путь должен указываться относительно файла свойств. - person Janosch; 20.07.2009

Лучший ресурс, который я нашел для информации о том, как настроить ResourceBundle во Flex 3, - это "Использование ресурсов "в Liveocs Adobe.

[ResourceBundle("icons")]

Помимо включения пакета ресурсов, вам необходимо убедиться, что вы указали путь к ресурсу во время компиляции. Прочтите документацию Adobe для получения дополнительной информации.

person calvinf    schedule 07.07.2009