在Flex中,现在可以使用-define编译器选项来完成各种有趣的工作。
在我的程序中,我使用的是这样的选项,使得我的某些代码被如下所示的块排除:
CONFIG::FACEBOOK{
//Some code
}
这运作良好。
如何使用MXML获得类似的行为?
我想做同样的事情,但是以这种方式省略/包括MXML标记,而不是AS代码块。
最佳答案
我的解决方案是添加一些标记,这些标记可以帮助注释掉某些构建中不必要的mxml代码块。
例如,我想在Android和iOS版本中添加不同的按钮:
<!-- iOS --><!--
<s:Button id="backBtn"
icon="{SHOW_LIST}"
click="navigator.popView()"/>
--><!-- /iOS -->
<!--Android-->
<s:Button id="exitBtn"
label="Exit"
click="NativeApplication.nativeApplication.exit()"/>
<!--/Android-->
现在运行简单的批处理脚本,该脚本将在iOS构建源代码中注释掉所有特定于Android的代码
PrepareForIos.cmd
@echo off
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "<!--Android-->" "<!-- Android --><!--"
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "<!--/Android-->" "--><!-- /Android -->"
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "<!-- iOS --><!--" "<!--iOS-->"
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "--><!-- /iOS -->" "<!--/iOS-->"
pause
FART是用于查找和替换字符串的命令行工具
现在我们的代码如下所示,可以为iOS构建:
<!--iOS-->
<s:Button id="backBtn"
icon="{SHOW_LIST}"
click="navigator.popView()"/>
<!--/iOS-->
<!-- Android --><!--
<s:Button id="exitBtn"
label="Exit"
click="NativeApplication.nativeApplication.exit()"/>
--><!-- /Android -->
逆运算批处理:
PrepareForAndroid.cmd
@echo off
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "<!--Android-->" "<!-- Android --><!--"
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "<!--/Android-->" "--><!-- /Android -->"
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "<!-- iOS --><!--" "<!--iOS-->"
"C:\Program Files (x86)\bin\fart.exe" -r -w -- H:\Flash\MyProject\src\* "--><!-- /iOS -->" "<!--/iOS-->"
pause
关于apache-flex - Flex的MXML条件编译?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7375037/