我正在创建一个新的 - “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>
感谢。
答案 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>
谢谢!