1、HOW TO GET
获得AS3C的方法很简单, 项目就挂在google code上(http://code.google.com/p/as3c/), 我们可以随时关注项目的发展动态和下载源码(http://as3c.googlecode.com/svn/trunk/).
2、HELLO WORLD
(1) 我们可以直接粘贴项目主页的例子到FLEX中(注意直接粘贴代码有问题, 第21行多了个符号´ 去掉就可以编译了)
(2) 编译这个as文件生成Main.swf, 将这个swf拷贝到as3c.exe的同级目录下
(3) cmd, 进入控制台, 用as3c编译这个项目: as3c.exe -inline Main.swf
(4) 把Main.swf拷回bin-debug文件夹覆盖第(2)步生成的Main.swf
(5) Debug测试结果, 输出Hello World!
3、开始使用as3c.exe
为了方便使用, as3c提供了很多个参数, 大体分为三种模式:
(1) replace: 主要用于部分替换编译, 用自己写的bytecode替换掉已经存在的方法体
常见用法: as3c -replace -o 生成的swf -class 要替换的类 -method 要替换的方法 源swf文件 ASM文件
举例: as3c -replace -o op.swf -class test -method testasm test.swf a.asm
这一系主要可选参数如下
-namespace [uri]
-class [name]
-method [method]
-constructor
-static-method [method]
-static-constructor
参数具体作用从字面意思就可以看出
(2) inline: 使用内联的ASM进行编译
常见用法: As3c.exe -o 生成的swf -inline 源swf
As3c.exe -inline 源swf
举例: As3c.exe -o output.swf -inline input.swf
As3c.exe -inline input.swf
这种方式是最常使用的编译方式
(3) dasm: 反编译
常见用法: As3c.exe -o 反编译后的opcde文件 -as3c 源文件
举例: As3c.exe -dasm -o dasm.txt -as3c test.swf
4、是实践的时候了
深入出真知, as3 opcode汇编是AS3的最底层, 也是AVM2的直接解析代码, 为了学习opcode 我们可以使用as3c.
不过as3c的dasm dump出的opcode实在是太多了, 在这个时候, AS3Eval就有作用了, 我们首先打开as3Eval的url(http://eval.hurlant.com/demo)
然后我们选择EvalUI, 清空TextArea里面的内容,输入一个最简单的method: function a() {return 1}, 然后我们Comple, Dump
观察dump后的方法结果:
我们可以根据结果构建出我们的inline DEMO:
然后inline编译: as3c.exe -inline test.swf
COPY 处理后的test.swf到bin-debug, 然后DEBUG
输出1