作者:QuantumFlash
网站:http://hexun.com/QuantumFlash
本文主要介绍Flex2 SDK中的应用程序编译器。翻译了官方的资料,并加以自己使用的经验,让大家看的更紧凑,如有不对或错误欢迎回复讨论交流。

应用程序编译器建立SWF文件并让其能运行在Adobe Flash Player的客户端里。客户端可以是一个独立运行的Adobe Flash 播放器或在浏览中的

插件。

应用程序编译器一共有3种,分别为:
1 Flex Builder附带的编译器。Flex Builder的编译器可以在 Flex Builder 中开启编译 Flex 项目和 ActionScript 项目。虽然在参数上有

所不同,但和 mxmlc 命令行编译器在功能上相类似。

要打开编译器:选择Project菜单的Build。Flex Builder附带的编译器就被打开了(你可以使用组件编译器来建立库项目)

要修改编译设定:选择Project的Properties的Flex Compiler 对话框。

和命令行编译的语法相同,你也可以设定大部分的值在"Additional compiler arguments"里。
详细语法在:http://livedocs.macromedia.com/flex/2/docs/00001500.html

除了生成SWF文件,Flex Builder也生成HTML Wrapper,在HTML Wrapper里包括了<object>和<embed>标签来指向新的SWF文件,当然脚本支持历

史管理,和播放器版本检测。
更多关于HTML Wrapper的资料:http://livedocs.macromedia.com/flex/2/docs/00001578.html

通常的编译器的默认设置在flex-config.xml文件里,你可以通过修改这个文件或创建新的配置文件来自定义编译配置文件。
但Flex Builder 的编译器默认并不使用flex-config.xml,它把自己默认设置存在别的地方,你当然可以通过load-config选项来使用自定义的

配置文件。Flex Builder有一个模板供修改,位于“Flex Builder的安装目录/Flex SDK 2/frameworks/”里的flex-config.xml。
加载自定义配置并替代原来的配置文件语法如下:
mxmlc -load-config=myconfig.xml
如果你不想替代原来的配置文件使用语法如下:
mxmlc -load-config+=myconfig.xml

如果使用mxmlc编译器,你还可以不用指定自定义配置文件名,mxmlc编译器首先会在目录中检查是否有配置文件和目标MXML文件文件名相同。

比如编译的目标是target.mxml,但你配置好了一个文件 target-config.xml。这样 mxmlc target.mxml文件时会自动使用 target-config.xml

文件的编译配置的。
这个特色可以让你一次编译很多不同的项目而不必担心修改配置。

配置文件的优先级如表所显示,越在下方的优先级别越高。

编译参数 Flex Builder Web-tier  mxmlc compc
默认配置 Yes No No No
 flex-config.xml No Yes Yes Yes
本地配置文件 No No Yes No
通过load-config参数指定的特定配置文件 Yes No Yes Yes
命令行参数 No No Yes Yes
面版参数 Yes No No No

你也可以通过dump-config选项利用现有设定来生成一个配置文件。
例如:mxmlc -dump-config myapp-config.xml
这句命令将生成一个myapp-config.xml基于现有的设置

关于配置文件的语法:http://livedocs.macromedia.com/flex/2/docs/00001492.html


为了减少编译的时间,你可以使用增量编译。增量编译通过检查每字节代码的修改来确定那些部分的代码被改动过,使用了增量编译后会多出

一个缓存文件形如*_n.cache,n代表根据编译配置第几次被生成,如果想强迫重新彻底编译,你也可以删除所有这些缓存文件。
增量编译默认在Flex Builder是开启的,但在mxmlc 命令行模式默认是关闭的。
如果要在WEB端编译开启增量编译,请修改flex-webtier-config.xml文件里的incremental-compile为true,修改flex-config.xml不会对WEB端

的编译设置有任何影响。如果production模式开启的话,请关闭增量模式,因为这样会导致WEB端的编译器不能重新编译页面,除非服务器重启


增量编译语法:mxmlc -incremental=true MyApp.mxml

2 命令行 mxmlc 编译器。你打开命令行窗口(可以在开始菜单输入command或cmd),然后进入你解压开的Flex2 SDK目录中的Bin文件夹。通常情况,输入你要编译的应用程序 MXML 根文件名。就能输出一个 SWF 文件。
编译器在:Flex2 SDK安装文件夹/bin 目录里

要更好使用mxmlc ,最好看下命令行语法的介绍在:http://livedocs.macromedia.com/flex/2/docs/00001486.html#150209

基本用法如下:
mxmlc [options] -file-specs target_file|dir [...]
比如要编译sample里flexstore的flexstore.mxml就这样写:
mxmlc ../samples/flexstore/flexstore.mxml

要获得帮助支持,输入:
mxmlc -help list

要获得高级帮助支持,输入:
mxmlc -help list advanced

要获得关于某些参数的帮助支持,输入:
mxmlc -help [pattern]
例如:
mxmlc -help warnings返回编译的出错提示参数。

要设置true,false,例如设置accessible,show-actionscript-warnings为true:
mxmlc -accessible=true -show-actionscript-warnings=true


设置变量如下:
-var var1 var2或-var=var1,var2

如果用前者设置完变量,使用--结束变量输入,例如:
-var var1 var2 -- -next_option
后者则不用这样,例如:
-var=var1,var2 -next_option

如果要对变量添加值使用+=操作符,这一般发生在类库等参数上,例如:
mxmlc -library-path +=c:/mylib

详细的命令行编译器参数:
mxmlc:http://livedocs.macromedia.com/flex/2/docs/00001500.html#157203
compc:http://livedocs.macromedia.com/flex/2/docs/00001508.html#157219

当然如果你需要使用JAVA命令行方式编译代码(一般发生在非WIN32或MACOS环境里,或者你需要使用编译器和其他基于JAVA的程序交互),你

也可以使用如下代码:
java -jar ../lib/mxmlc.jar -load-config ../frameworks/flex-config.xml -file-specs c:/flex2/MyApp.mxml
解释:mxmlc已经被编译为一个包文件,要使用他只要调用这个包库就行了。调用路径一般在装好的Flex2 SDK的lib文件夹里
其他参数用法相同(只是要注意加上-load-config参数加载编译配置)


3 Web端编译器。Web-tier编译器运行在 J2EE 应用程序服务器上,当应用程序服务器接受到请求 *.mxml 文件到服务端容器时,服务器编译好

所请求的页面文件(SWF文件)然后返回结果到客户端。 当装好Flex Data Services时,Flex网站应用程序就被装好了。

详细关于Web端编译器介绍:http://livedocs.macromedia.com/flex/2/docs/00001482.html

 

 


Flex Builder附带的编译器,命令行 mxmlc 编译器,Web端编译器都有相似的参数调用。
注意:你只可以使用Flex Builder附带的编译器,命令行 mxmlc 编译器编译只有 ActionScript 代码而不包含 MXML 的文件。因为Web端编译

器需要至少一个MXML根文件来通过编译。

 


文章来源:http://computer.mblogger.cn/yang007/posts/55730.aspx
posted on 2006-07-13 21:20  FireYang  阅读(391)  评论(0编辑  收藏  举报