Flex条件编译 - 是否可以在flex库项目中进行条件编译?

时间:2013-06-12 10:00:42

标签: flex web actionscript swc conditional-compilation

使用Flex,在使用的条件编译中创建了桌面和Web应用程序。它运行成功。现在,我想为桌面和网络提供单个swc文件。因此创建了满足该条件的库项目。虽然在flex库项目中使用条件编译会遇到很多问题,例如冲突变量名和重复函数等等,这在使用没有swc文件的flex项目时我没有遇到过。

现在问题出现了:是否可以在flex库项目上进行条件编译?

2 个答案:

答案 0 :(得分:1)

编译SWC时,可以通过在-define参数中传递它们来指定编译常量。但是,这将只包含您使用该常量添加的任何代码 - 即,您无法在包含SWC的项目中重置const以获得不同的结果。

以下是用于创建SWC的bat文件的代码。将其复制到新文件中,并使用扩展名.bat进行保存。根据需要替换文件路径。

@echo off

set flexroot=D:\Program Files\FlashDevelop\Tools\flexsdk\
set proj=D:\Dev\TestSWC\

cd %flexroot%bin\
compc.exe -source-path %proj%src -is %proj%src -optimize -define CONFIG::debug false -define CONFIG::release true -output %proj%bin\TestSWC.swc

pause

我用它来构建一个包含单个类的SWC文件,如下所示:

package  
{
    public class TestClass
    {

        public function sayHello():void 
        {
            CONFIG::debug
            {
                trace( "Hello debug" );
            }
            CONFIG::release
            {
                trace( "Hello release" );
            }
        }

    }

}

然后我创建了另一个项目,包括SWC并将CONFIG :: debug标志设置为true,并调用sayHello()函数。它跟踪"Hello release",因为SWC是使用CONFIG :: release标志编译为true

答案 1 :(得分:0)

引用docs

  

mxmlc编译器允许您在编译时将常量值传递给应用程序

它没有提到compc,所以我很确定它是不可能的。我也想知道这在技术上是如何工作的,因为你在编译期间包含/排除了部分代码。编译的SWC将不再包含条件代码。