在 Adobe Flex 3 中使用条件编译

原创 2009年09月27日 22:04:00

赖勇浩(http://laiyonghao.com )译

原文地址: http://bit.ly/3UpSWP

我初接触的时候,还以为 Flex 3 不支持条件编译,后来找了好些文档来看,也没有看明白,直到找到这篇文章的 livedocs 文档才明白原来是这么回事。好文档嘛,就想译出来给大家看看咯,虽然一如既往地半生熟地译法,看在我的热情上,大家就少骂哈……

———————————————–

在编译应用时传递常量给mxmlc编译器就能够使用条件编译——在构建时包含或排除的某些代码块。 最常见的是通过一个布尔值来包含或排除一段调试或检测代码。 如下面的例子就是一段使用内置布尔常量实现条件化的代码:

CONFIG::debugging{
  //执行调试代码。
}
这样就能够使用compiler.define
编译选项了。

常量可以是一个布尔、字符串、或数值、或表达式(在编译时对 ActionScript 求值)。

这种常量可以在应用的源代码中作为一个全局常量访问。

使用define 选项,可以为常量定义一个命名空间,相应的变量名和数值使用下面的语法:

-define = namespace::variable_name,value
命名空间可以任意配置。

下面的例子在CONFIG名字空间里定义了常量debugging
,它的值为true
-define=CONFIG::debugging,true
在命令行设置多个常量的值,可以多次使用 define 选项;例如:
mxmlc -define=CONFIG::debugging,true -define=CONFIG::release,false MyApp.mxml
也可以在 flex-config.xml 文件中设置这些常量,而不是在命令行,下面是例子说明:
<compiler>
  <define>
    <name>CONFIG::debugging</name>
    <value>true</value>
  </define>
  <define>
    <name>CONFIG::release</name>
    <value>false</value>
  </define>
</compiler>
Flex Ant 任务中,也可以用一个define
元素来定义常量,如下:
<mxmlc ... >
  <define name="CONFIG::debugging" value="true"/>
  <define name="CONFIG::release" value="false"/>
</mxmlc>
actionscripticon_400
使用内置常量

可以 ActionScript 代码中使用内置常量。 布尔值可以用来条件化顶层函数定义、类和变量,与 C/C++ 上使用#IFDEF 预处理指令的方式大致相同, 但不能使用布尔常量条件化元数据或import 语句。

下面是条件化类的定义,在编译器编译应用程序时决定使用哪个类定义:

// compilers/MyButton.as
package  {
  import mx.controls.Button;
  CONFIG::debugging
  public class MyButton extends Button {
    public function MyButton() {
      super();
      // Set the label text to blue.
      setStyle("color", 0x0000FF);
    }
}
CONFIG::release public class MyButton extends Button { public function MyButton() { super(); // Set the label text to red. setStyle("color", 0xFF0000); } } }
也可以传递字符串和数值到应用中去,把它们当作内置常量来使用,就像在 C/C++ 中使用#define
宏指令一样。

例如,传递一个名为NAMES::Company
的值,能够替代如下的 ActionScript 语句来定义常量:
private static const companyName:String = NAMES::Company;

可以传递表达式,它将在编译时求值。 下面的例子计算为false :

-define+=CONFIG::myConst,"1 > 2"
下面的例子值为3 :
-define+=CONFIG::myConst,"4 - 1"
表达式可包含常量和其他设定值,例如:
-define+=CONFIG::bool2,false -define+=CONFIG::and1,"CONFIG::bool2 && false"
一般来说,应该为常数加上双引号,以确保mxmlc编译器正确地将它们作为一个单独的参数。

传递字符串

当传递字符串,您必须使用双引号,编译器才能够正确地处理它们。

在命令行定义字符串,则必须使用用双引号,对于原来就需要的双引号,需要转义(”/”Adobe Systems/”" 或 “/’Adobe Systems/’”)或改用单引号(”‘Adobe Systems’”) 。

下面的例子是在命令行传递字符串两种方法:

-define+=NAMES::Company,"'Adobe Systems'" -define+=NAMES::Ticker,"/"ADBE/""
定义配置文件中的字符串,你也需要使用单或双引号,例如:
<define>
<name>NAMES::Company</name>
<value>'Adobe Systems'</value>
</define>
<define>
<name>NAMES::Ticker</name>
<value>"ADBE"</value>
</define>
命令行中传递空字符串,使用双引号包围的单引号,如下:
-define+=CONFIG::debugging,"''" 
在配置文件传递空字符串,用双引号(“”
)或单引号('')即可 。
版权声明:本文为博主原创文章,未经博主允许不得转载。

【Adobe Air程序开发】用Adobe Flex3开发AIR应用程序–入门指南

1 安装Adobe AIR 运行时,和java的JVM类似。 Adobe AIR 运行时允许在桌面运行AIR应用程序,脱离游览器的束缚。 下载安装文件http://labs.adobe.com/d...
  • LG1259156776
  • LG1259156776
  • 2016年10月29日 21:25
  • 1061

eclipse安装flash builder 4.7插件以及java、flex整合开发

看了看网上不少文章,发现很多内容都是很老的,没法用。故把自己的安装过程记录下来,方便以后使用          1、在这里,eclipse使用最新版eclipse juno 3.7          ...
  • xiaoliouc
  • xiaoliouc
  • 2013年04月18日 17:14
  • 32948

【Abode Air程序开发】Flex air文件打包和运行

1 安装Adobe AIR 运行时,和java的JVM类似。  Adobe AIR 运行时允许在桌面运行AIR应用程序,脱离游览器的束缚。  下载安装文件http://get.adobe.com/...
  • LG1259156776
  • LG1259156776
  • 2016年10月29日 21:28
  • 1165

在 Adobe Flex 3 中使用条件编译

赖勇浩(http://laiyonghao.com )译 原文地址: http://bit.ly/3UpSWP ———————————————– 在编译应用时传递常量给mxmlc编译器...
  • cruelchen
  • cruelchen
  • 2013年07月12日 11:01
  • 310

Adobe Flex 3 高级编程 源码

  • 2012年11月19日 17:41
  • 55.25MB
  • 下载

Adobe Flex 3 Component Explore part2

  • 2008年07月12日 18:08
  • 9.5MB
  • 下载

Adobe Flex 3 高级编程 源码 part2

  • 2012年05月28日 11:24
  • 18.04MB
  • 下载

Adobe Flex 3 API

  • 2010年01月09日 02:25
  • 35KB
  • 下载

flex 3: 使用 tree 控件(三) (

flex 3: 使用 tree 控件(三) ( 1.tree与datagrid的整合   http://www.adobe.com/2006/mxml" layout="absolute...
  • cruelchen
  • cruelchen
  • 2013年07月12日 10:55
  • 368

Flex 3 AdvancedDataGrid的使用(八)

转自 http://hi.baidu.com/lz0830/blog/item/327bf5df7548841a62279862.html 我们继续来讲AdvancedDataGrid的使用。您可以...
  • jetty_han
  • jetty_han
  • 2011年11月14日 21:04
  • 258
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在 Adobe Flex 3 中使用条件编译
举报原因:
原因补充:

(最多只允许输入30个字)