Flex 编译器及编译步骤
通过为Flex项目添加编译器参数:-keep-generated-actionscript=true 可以看到经过编译器处理过的源程序文件集合。
在这些文件的文件名中包含有“xxx-generated.as”字样。
这些异样的文件名不符合:“文件名=类名” 这个规则的。通常理解这些文件是不能够被编译的(比如在FlexBuilder编辑环境下会报编译错误)。
这些文件是谁生成的?这样的文件名又是如何能够顺利通过编译的?
下面转载的这篇文章算是为解开这个谜,做个前期铺垫。
(猜想和编译器有很大关系)
转载: sysu_2010的专栏 http://blog.csdn.net/sysu_2010/article/details/6619518
=========================================================================================================
【编译】
ActionScript程序在可被Flash运行时执行之前,必须从人可读的ActionScript 3.0代码转化为一种Flash运行时所理解的浓缩的二进制形式,称为ActionScript字节码(或ABC)。然而,ActionScript字节码本身不能被Flash运行时执行;而必须被封装到一个称为.swf文件的二进制容器文件中,.swf文件把字节码和任何ActionScript程序所需的嵌入媒体资源都存储到Flash文件格式或称SWF中。将ActionScript程序转化为字节码的过程叫作编译该程序,生成.swf文件的过程叫作编译该.swf文件,有时也叫输出或发布该.swf文件。 要编译ActionScript 3.0程序和.swf文件,我们使用一个叫编译器的软件模块。编译ActionScript代码的编译器叫作ActionScript编译器;生成.swf文件的编译器叫作SWF编译器。任何声称完全支持Flash文件格式的SWF编译器都包括一个ActionScript编译器。自然,Flex Builder 2和Flash制作工具都包含一个SWF编译器(并额外包括一个ActionScript编译器)。Flex Builder 2和Flash制作工具共享同一个ActionScript编译器,但却有不同的SWF编译器——分别叫作Flex编译器和Flash编译器。Adobe还把Flex编译器作为一个单独的命令行程序提供,叫作mxmlc。mxmlc编译器包含在Adobe的免费开发者工具包Flex SDK中。

【即时编译(Just-In-Time Compilation)】
当 ActionScript程序运行的时候,Flash运行时读取编译过的ActionScript字节码并将它翻译成本地机器码指令,在它所运行的特定的计算机硬件上执行。很多情况下,本地机器码指令被保存下来以便它们可以再次使用而不需要重新从ActionScript字节码翻译。 将ActionScript 3.0代码转化为字节码叫作编译,同样,将ActionScript字节码翻译成本地机器码并留待后续执行的过程也叫作编译。首先,程序员将人可读格式的代码编译成Flash运行时所理解的格式(ActionScript字节码),然后,Flash运行时自动将ActionScript字节码编译成运行程序的硬件所理解的格式(本地机器码),后面这种编译形式(字节码到机器码)被称为即时编译,或JIT,因为它就在程序需要特定的被编译的字节码之前立即发生。即时编译有时也叫动态翻译。有经验的程序员可能有兴趣了解,类定义的顶层不是即时编译的(因为它只被执行一次)。

Flex 编译器及编译步骤的更多相关文章
- Linux-编译器gcc/g++编译步骤
gcc和g++现在是gnu中最主要和最流行的c&c++编译器.g++是c++的命令,以.cpp为主:对于c语言后缀名一般为.c,这时候命令换做gcc即可.编译器是根据gcc还是g++来确定是按 ...
- Notepad++根据语言类型自动选择对应编译器来编译代码
Notepad++的NppExec插件可以调用好多编译器来编译代码. 比如编译Java: NPP_SAVE javac "$(FULL_CURRENT_PATH)" java -c ...
- Android 源码编译 步骤
添加资源后编译步骤 1:lunch 112:mmm frameworks/base/core/res/生成Install: out/target/product/hammerhead/system/f ...
- zlib库VS2015编译步骤
[点击这里下载zlib1.2.8源码](http://zlib.net/zlib128.zip) [点击这里下载zlib1.2.8编译动态库](http://zlib.net/zlib128-dll. ...
- 腾讯开源项目phxpaxos的编译步骤
#paxos的一般编译流程在项目文档<中文详细编译手册>里面已经有介绍,这里重点介绍一下编译samples目录下的代码: #我的环境是ubuntu; #设置paxos根目录 phx_dir ...
- 如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序
首先说明一下背景: 为什么要在DOS界面编译C/C++源程序?有很多现成的开发环境(IDE)如:vs, vc++等,这些开发环境集成了编译,调试,使用起来很方便,而且图形化操作界面,简洁明了.但是在开 ...
- Android APK反编译步骤
反编译步骤 1.通过Android Killer 打开apk,自动开始分析 2.分析结束后,在分析好的工程上右键->打开方式->打开文件位置 在文件夹ProjectSrc中有文 ...
- R58的编译步骤f1选项v1.1版本
R58的编译步骤f1选项v1.1版本 2017/3/16 16:38 请严重注意: 编译全志R58的Android6.0.1的系统和其它系统有两个不同: 1.在执行pack打包之前,必须执行verit ...
- OpenSSL简单介绍及在Windows、Linux、Mac系统上的编译步骤
OpenSSL介绍:OpenSSL是一个强大的安全套接字层password库,囊括基本的password算法.经常使用的密钥和证书封装管理功能及SSL协议.并提供丰富的应用程序供測试或其他目的使用. ...
随机推荐
- [转载]不唐突的JavaScript的七条准则
经过多年的开发.教学和编写不唐突的JavaScript, 我发现了下面的一些准则.我希望它们可以帮助你对“为什么这样设计和执行JavaScript比较好”有一点理解.这些规则曾经帮助我更快地交付产品, ...
- flume 读取kafka 数据
本文介绍flume读取kafka数据的方法 代码: /************************************************************************* ...
- Hdoj 1176 免费馅饼 【动态规划】
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号
Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号 1. 框架选型的要求 1 1.1. 文档多 1 1.2. 跨平台 1 2. html解析器特性: 1 2 ...
- 冒泡,简单选择,直接插入排序(Java版)
冒泡.简单选择,直接插入这三种排序都是简单排序. 工具类 package Utils; import java.util.Arrays; public class SortUtils { public ...
- Vim 删除不包含指定字符串的行及统计匹配个数
Vim 删除不包含指定字符串的行及统计匹配个数 转载▼ Help :g/pattern/d 是找到pattern, 删之 :v/pattern/d 是找到非pattern, 删之 :%s/xx ...
- Linux 设置交换分区
当需要添加swap分区时,可以使用如下方法:设置交换分区:1 以dd指令建立swapoff2 mkswap 来将swapfile 格式化为swap的档案格式.3 swapon 来启动该系统文件,使之成 ...
- 函数响应式编程(FRP)从入门到”放弃”——基础概念篇
前言 研究ReactiveCocoa一段时间了,是时候总结一下学到的一些知识了. 一.函数响应式编程 说道函数响应式编程,就不得不提到函数式编程,它们俩到底有什么关系呢?今天我们就详细的解析一下他们的 ...
- c#DataGridView复制粘贴删除功能
//可在dgv中复制.剪切.粘贴.删除数据 /// <summary> /// DataGridView复制 /// </summary> /// <param name ...
- WLAN RTT (IEEE 802.11mc)
WLAN RTT (IEEE 802.11mc) Android 9 中的 WLAN 往返时间 (RTT) 功能允许设备测量与其他支持设备的距离:无论它们是接入点 (AP) 还是 WLAN 感知对等设 ...