使用Flex,在使用的条件编译中创建了桌面和Web应用程序。它运行成功。现在,我想为桌面和网络提供单个swc文件。因此创建了满足该条件的库项目。虽然在flex库项目中使用条件编译会遇到很多问题,例如冲突变量名和重复函数等等,这在使用没有swc文件的flex项目时我没有遇到过。
现在问题出现了:是否可以在flex库项目上进行条件编译?
答案 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将不再包含条件代码。