转:http://www.lite3.cn/blog/?p=404&cpage=1
知道C/C++ 有条件编译,一直想着AS要是也有条件编译就好了,今天搜了半天Google,终于让我找到了
下面翻译livedocs.adobe.com上一篇文章,英文不怎么好,有些是Google翻译的,然后我再纠正下语句,大家不要见怪。
想要包含或排除某些代码块,你可以使用条件编译。mxmlc编译器允许你在编译时传递常量值到应用程序。通常,您传递一个布尔值用于包含或排除调试代码。下面的例子通过使用一个Boolean常量内联代码块:
// Execute debugging code here.
}
你可以使用compiler.define编译器选项传递一些常量。这些常量可以是一个Boolean,String,Number或表达式。然后,这些常量可以在应用程序的源代码中作为全局常量访问。
要使用difine选项,可定义一个命名空间配置常量,变量名和值使用以下语法:
-define=namespace::variable_name,value
可以定义任何你想使用是命名空间,下面是示例定义一个debugging 为true的常量在CONFIG命名空间。
-define=CONFIG::debugging,true
可以定义多个常量在同一个命令行里,用多个define隔开,例如:
mxmlc -define=CONFIG::debugging,true -define=CONFIG::release,false MyApp.mxml
也可以在flex-config.xml 文件里定义这些常量,而不必在命令行里定义,你可以这样写:
<define>
<name>CONFIG::debugging</name>
<value>true</value>
</define>
<define>
<name>CONFIG::release</name>
<value>false</value>
</define>
</compiler>
在Flex Ant里 可以设置这些常量作为元素定义,类似下面的示例:
<define name="CONFIG::debugging" value="true"/>
<define name="CONFIG::release" value="false"/>
</mxmlc>
使用内置常量
你可以内联ActionScript常量,以一个Boolean常量为条件编译顶级函数,类,变量定义,在C/C++里通常使用#IFDEF 预处理命名。不能使用Boolean常量来条件编译metadata 或 import 语句。
下面的示例来条件编译一个类定义。
package
{
import mx.controls.Button;
CONFIG::debugging
publicclass MyButton extends Button
{
public function MyButton()
{
super();
// Set the label text to blue.
setStyle("color", 0x0000FF);
}
}
CONFIG::release
publicclass MyButton extends Button
{
public function MyButton()
{
super();
// Set the label text to red.
setStyle("color", 0xFF0000);
}
}
}
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"
一般情况下你应该把String 用引号包含,以便告诉编译器它们是一个单独的参数。
传递String
当传递字符串,您必须添加额外的引号,以确保他们正确地编译器解析。
定义命令行字符串时,你必须使用双引号,如果本身就是双引号,则使用转义字符\" 或者单引号。
下面的示例演示了命令行里使用字符串的方法:
-define+=NAMES::Company,"'Adobe Systems'" -define+=NAMES::Ticker,"\"ADBE\""
在配置文件里定义字符串,你必须用双引号或单引号包含字符串:
<name>NAMES::Company</name>
<value>'Adobe Systems'</value>
</define>
<define>
<name>NAMES::Ticker</name>
<value>"ADBE"</value>
</define>
在命令行传递一个空字符串,则必须用双引号包含单引号。
-define+=CONFIG::debugging,"''"
在配置文件里传递一个空字符串,则可以用单引号或双引号,都OK的
------------------------------------------------------------------------------------------------------
呵呵终于翻译完了,其实条件编译也可以在FD 和 Flash CS4里配置的。
在Flash CS4 里设置:(Ctrl+Shift+F12) 调出发布设置 ==> Flash选项卡 ==> AS脚本设置,调出 高级ActionScript3.0设置 ==> 选择配置常数选项卡 ==> 添加自己喜欢的预定义常量 格式为 namespace::variable_name ,然后后面是常量值。
在FD里设置:Project菜单 ==> properties...子菜单,调出Properties窗口 ==> 选择Compiler Options选项卡 ==> 选择Advanced选单里的Advanced Compiler Options ==> 点右边的 ... 按钮,调出输入窗口==> 输入编译选项就ok了。
相关推荐
然而,有时候开发者可能需要对已经编译好的SWF(ShockWave Flash)文件进行反编译,以便查看或修改源代码,这就是“Flash AS3 反编译工具”的作用。 反编译工具是将已编译的二进制代码转换回源代码的程序,这对于...
这个文件是编译后的AS3类库,包含所有操作Excel所需的功能。将该文件添加到你的Flex或AS3项目的库路径中,通常通过IDE如Flash Builder或IntelliJ IDEA的设置选项完成。确保在编译时能够正确引用库中的类。 使用“as...
【标题】"as3ds_1.02" 指的可能是一个软件或库的版本号,这里的“as3ds”很可能代表ActionScript 3(AS3)的一个专门针对3D图形处理的库或者框架。AS3是Adobe Flash平台上的编程语言,广泛用于创建互动内容、游戏和...
"library.swf"是编译后的AS3库文件,其中包含了代码、图形和其他资源。在这个示例中,它很可能是播放器的主要执行文件,包含播放器的控制逻辑、视图层以及对HLS和RTMP协议的支持。用户可以通过加载这个SWF文件在网页...
在实际操作中,用户应仔细遵循指南中的步骤,确保所有先决条件得到满足,以避免编译错误和兼容性问题。对于那些不熟悉源码编译的用户,强烈建议在专业人员的指导下进行,以确保操作的正确性和安全性。
- 处理条件编译指令(`#if`, `#ifdef`, `#ifndef`, `#else`, `#elif`, `#endif`)。 - 删除注释。 预处理的输出是经过宏替换和条件编译后的文本文件,但尚未包含机器特定的指令。使用`gcc -E`可以查看预处理后的...
在提供的压缩包文件中,`Main.as`可能是实现以上逻辑的AS3源代码,而`BB.swf`是编译后的SWF文件,可以在Flash Player或支持SWF的环境中运行,展示实际的多边形绘制效果。 通过学习和实践这些AS3绘制多边形的技巧,...
1. **预处理**: 预处理器(cpp)处理源代码中的宏定义、条件编译指令,将它们转化为标准C或C++代码。 2. **编译**: 编译器(cc)将预处理后的代码转换为中间语言(assembly),并进行初步优化。 3. **汇编**: 汇编...
- 条件编译:根据条件编译指令(如`#ifdef`、`#ifndef`等)决定是否保留某段代码。 - 最终生成的文件通常是`.i`扩展名的文件,包含了预处理后的代码。 2. **编译(Compilation)**: - 编译器GCC负责将预处理后...
3. `#ifdef`、`#ifndef`、`#endif`:条件编译指令,用于根据宏定义的状态选择性地编译代码段。这对于编写跨平台或有多种配置的代码非常有用。 4. `#if`、`#elif`、`#else`:基于条件的编译,允许根据表达式的值来...
AS3的`D.eval`是一个强大的功能,它允许在运行时动态执行ActionScript代码,极大地扩展了AS3的灵活性和动态性。这个特性对于开发人员来说是一个宝贵的工具,尤其是在需要根据用户行为或特定条件来改变程序逻辑的情况...
预处理器主要处理#include指令,展开宏定义,并处理条件编译指令(#ifdef, #ifndef, #endif等)。hello.i文件包含了预处理后的代码,但仍然保持高级语言的形式。 3. **hello.s** 这是汇编代码文件,扩展名为.s。在...
在本文中,我们将深入探讨如何在Flash AS3中实现一个基于重力的动态球体下落和反弹模拟。这个项目,名为"Flash AS3 帧上代码 重力球",展示了如何创建一个简单的物理引擎,使得球体在舞台上随机出现并遵循重力定律...
它处理源代码中的宏定义、条件编译指令(#if、#ifdef等)以及包含文件。预处理器将源代码转化为预处理后的文本,为后续阶段准备。 2. **编译(Compilation)**:预处理后的文本进入编译阶段,由cc1或cc1plus程序处理...
AS3 FLV播放器是一款专为初学者设计的ActionScript 3.0视频播放解决方案,它支持播放FLV(Flash Video)格式的视频文件。在本文中,我们将深入探讨AS3,FLV格式以及如何使用AS3来创建一个基本的FLV播放器。 **AS3...
1. **ActionScript 3基础**:理解变量声明、数据类型、控制流语句(如条件语句和循环)以及函数的概念。 2. **面向对象编程**:学习如何定义类、创建对象以及实现继承和多态性。 3. **Stage3D API**:了解如何初始化...
"License.txt"文件通常包含软件的许可协议,这表明该AS3解析器可能遵循特定的开源许可条款,允许用户在遵守某些条件的情况下使用、修改和分发代码。查看这个文件对于理解如何合法地使用这个解析器至关重要。 在Java...
我一般会在Solution中新增一个用于测试用的配置,在其中增加一个“Test”之类的编译指令,然后在代码中,把一些测试条件,测试方法放到这个指令下。在开发团队还没有引进单元测试之类的概念的时候,我可不想用新增一...
1. 预处理:处理宏定义(#define)、条件编译(#if等)和包含文件(#include)。 2. 编译:将预处理后的源代码转换为汇编语言。 3. 汇编:将汇编语言转换为目标文件(.o),包含机器码和符号信息。 4. 链接:将多个目标文件...
1. **预处理器(cpp)**:负责处理源代码中的宏定义、条件编译指令等,将原始的C/C++源代码转化为预处理后的代码。 2. **编译器(gcc)**:针对目标平台的CPU架构,将预处理后的代码转换为汇编语言,如对于JZ2400的...