zoukankan      html  css  js  c++  java
  • 在 Adobe Flex 3 中使用条件编译

    赖勇浩(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,"''" 
    在配置文件传递空字符串,用双引号(“”
    )或单引号('')即可 。
    
  • 相关阅读:
    node.js 安装后怎么打开 node.js 命令框
    thinkPHP5 where多条件查询
    网站title中的图标
    第一次写博客
    Solution to copy paste not working in Remote Desktop
    The operation could not be completed. (Microsoft.Dynamics.BusinessConnectorNet)
    The package failed to load due to error 0xC0011008
    VS2013常用快捷键
    微软Dynamics AX的三层架构
    怎样在TFS(Team Foundation Server)中链接团队项目
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154395.html
Copyright © 2011-2022 走看看