跨多个Flex应用程序共享资产(图标/图像)的最佳方式是什么?

时间:2009-06-09 17:12:38

标签: flex actionscript-3 swc

我正在创建一个新的 - “lite” - 我刚才创建的Flex应用程序版本。我一直在将许多类和组件移植到编译SWC文件的Flex库项目中。因为两者都是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 个答案:

答案 0 :(得分:4)

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

----您应该能够将Flex Builder / eclipse中的代码提示/ intellisense从Application中的类中获取到库项目中的类

2)在你的应用程序中 - 做一些像这样的代码:

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

// more image property setting... 

someCanvas.addChild(image);

3)这将让你前进 - 使用图书馆项目来保存图像等......

***请注意:如果图像需要多次加载,重复使用等,还需要采取其他措施来挤出最佳性能等...

答案 1 :(得分:0)

这段lifeocs会让你感兴趣:

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

您是否有一个具体示例,说明如何嵌入资产并尝试在生成的swc中使用它们?您是否认为您的问题在于将它们嵌入到swc中或在实际应用中使用swc?

答案 2 :(得分:0)

好吧,使用@ Gabriel的建议,这就是我最终的结果:

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>

谢谢!