Каков наилучший способ обмена ресурсами - значками / изображениями между несколькими приложениями Flex? - PullRequest
3 голосов
/ 09 июня 2009

Я нахожусь в процессе создания новой "облегченной" версии приложения Flex, которое я создал некоторое время назад. Я переносил многие классы и компоненты на проект библиотеки Flex, который компилирует файл SWC. Поскольку оба являются приложениями Cairngorm, я не могу полностью удалить дублирующийся код, но кажется логичным, что я должен иметь возможность обмениваться ресурсами, такими как значки (файлы PNG). Каков наилучший способ сделать это? Я пытался включить их в SWC, но я не могу понять, как получить к ним доступ в приложении. Если вы можете помочь мне понять это, то на мой вопрос ответят. Есть мысли?

Вот пример того, как я в настоящее время встраиваю значки / изображения в свое приложение Flex:

<mx:Script>
    <![CDATA[
        [Bindable]
        [Embed(source="assets/icons/cancelIcon.png")]
        private var cancelIcon:Class;

        [Bindable]
        [Embed(source="assets/icons/saveIcon.png")]
        private var saveIcon:Class;
    ]]>
</mx:Script>

Спасибо.

Ответы [ 3 ]

4 голосов
/ 10 июня 2009

0) Во-первых, глядя на код выше - я рекомендую некоторые незначительные изменения:

// Actionscript instead of MXML:
public class ResourceClasses
{
        Bindable]
        [Embed(source="assets/icons/cancelIcon.png")]
        public static var CancelIconClass:Class;

        // make your variable public and static without public no one 
        // outside the class can access AND bindable won't matter
}

---- Теперь скомпилируйте вашу библиотеку. ---- Если ресурсы не в нужном месте, компилятор будет жаловаться

1) В вашем приложении вам нужно сослаться на проект библиотеки / swc

---- Вы должны иметь возможность получать подсказки кода / intellisense во Flex Builder / eclipse от классов в вашем приложении к классам в проекте библиотеки

2) В вашем приложении - введите код, подобный следующему:

var image:Image = new Image();
image.source = ResourceClasses.CancelIconClass;

// more image property setting... 

someCanvas.addChild(image);

3) Это поможет вам - использовать проект библиотеки для хранения изображений и т. Д. *

*** ПРИМЕЧАНИЕ. Если изображения необходимо загружать несколько раз, использовать повторно и т. Д. - Существуют и другие шаги, чтобы выжать лучшую производительность и т. Д.

0 голосов
/ 10 июня 2009

Ну, используя совет @ Габриэля, вот что я закончил:

package
{
    [Bindable]
    public class ResourceClasses
    {
        [Embed(source="assets/icons/cross.png")]
        public static var CancelIconClass:Class;
    }
}

Ссылка в моем приложении, как это:

<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Button label="Cancel Changes" icon="{ResourceClasses.CancelIconClass}" />
</mx:Box>

Спасибо!

0 голосов
/ 09 июня 2009

Вам будет интересен этот раздел liveocs:

http://livedocs.adobe.com/flex/3/html/help.html?content=building_overview_5.html.

У вас есть конкретный пример того, как вы встраиваете ресурсы и пытаетесь использовать их в получающемся SWC, который не работает? Как вы думаете, ваша проблема в том, чтобы внедрить их в SWC или использовать их из SWC в реальном приложении?

...