使用条件编译控制 swf 的嵌入资源

使用条件编译控制 swf 的嵌入资源

这是我在一个 Flex 交流群中碰到的问题,某个项目需要针对不同的发行版本使用不同的资源文件,如果把两个版本的资源文件都嵌入,会增大swf的体积,但又不能分为两个项目,应该没人想维护两份相同的代码吧,比较靠谱的方法是使用条件编译参数,具体做法如下:

  • 在编译参数中添加如下配置:
-define=CONFIG::dev,false
  • 在项目中这样使用:
CONFIG::dev
{
    [Embed(source="1.png")]
    private var background:Class;
}
 
CONFIG::dev
{
    [Embed(source="2.png")]
    private var background:Class;
}

要嵌入不同的资源只需在编译参数中修改 dev 的值就可以了。

注意事项:该方法只适用于 mxmlc 编译器,而使用 Flash Builder 4.7 创建的 ActionScript 项目用的是新的 ASC 2.0 编译器,后者对 [Embed] 标签的处理方式与前者不同,如果要使用上述方法,需要修改项目中的 .actionScriptProperties,把 useFlashSDK="false" 改为 useFlashSDK="true"。