flex经过编译成可以运行的swf文件,如果完成的这个操作,adobe还没有进行公开,通过反编了解到了他的一下内容,做一下记录。
mxmlc.jar,swfkit.jar,是用来存放编译的jar文件,主要的编译过程倒序如下:
1、compiler.API通过方法encode将movie对象写入swf文件中
2、写入的是SwfEncoder的数据流
3、过程是首先生成一个TagEncoder类,然后通过TagEncoder对象构造MovieEncoder类,其中MoieEncoder中包含一个内部变量hander就是TagEncoder的对象,然后调用MovieEncoder对象的export方法,组装hander,等export完成以后,然后tagEncoder进行write操作,主要是将TagEncoder的对象流,也就是SwfEncoder的数据流写入到文件中。
过程如下,通过写入header的过程了解写入的内容
public void header(Header header)
{
int swfVersion = header.version;
this.header = header;
writer = createEncoder(swfVersion);
tagw = createEncoder(swfVersion);
width = header.size.getWidth();
height = header.size.getHeight();
frames = 0;
writer.writeUI8(header.compressed ? 67 : 70);
writer.writeUI8(87);
writer.writeUI8(83);
writer.writeUI8(header.version);
writer.write32((int)header.length);
if(header.compressed)
{
writer.markComp();
}
encodeRect(header.size, writer);
writer.writeUI8(header.rate >>
![](/images/smiles/icon_cool.gif)
;
writer.writeUI8(header.rate & 0xff);
framecountPos = writer.getPos();
writer.writeUI16(header.framecount);
}
这个是写入头文件的方法,可以查询看到,swf文件中前8位应该是67或者70,第二个字节应该是87,然后是83,然后是header的版本,然后4位是他的长度,其中写入32位的是从低到高位写入,可以通过查询swf的16进制代码,可以完全匹配到他们的编码格式。
编写出这样的二进制代码以后,在前台flash player就可以进行代码的运行了。flash player也可以一个开源的工程,所以就前后贯通了。
分享到:
相关推荐
flex编译优化方法,以及Flex工程编译慢的优化方案
NULL 博文链接:https://shihuan830619.iteye.com/blog/1075844
eclipse下tomacat的配制flex编译的配制方法.pdf
使用Maven对Flex项目进行构建,无需依赖于FlexBuilder进行编译开发。
有助于学习flex编译,可以快速了解问题
本次资源就是针对一次编译原理实验,实验的内容就是用flex工具自动构造词法分析程序
NULL 博文链接:https://wuxiubing.iteye.com/blog/1790127
编译原理课程中的flex和yacc 这是flex的安装程序
bison&flex开发组件,主要配合Visual C++ 6.0使用,自动配置VC6.0,省去手工配置VC6.0的繁琐步骤。
flex 编译原理 计数器 模拟编译器的原理识别简单的计数器字符编译
编译原理词法分析,语法分析的强大工具,基于windows平台,win7亲测可用
在项目中,以前有个使用Flex的功能,发现没有源代码,几经周折,最终通过此软件实现反编译及代码的修改,最后在原有功能的基础中,实现了项目上的新需求。
内含修改源码所需的环境配置说明,修改后用ant发布即可
flex actionscript反编译工具
6.1 Flex编译过程 6.1.1 开发 6.1.2 编译 6.1.3发布 6.2 关于项目 6.3 创建Flex应用程序 6.3.1 创建一个Flex项目 6.3.2 使用设计模式 6.3.3 使用数据绑定 6.3.4 使用触发器和特效 ...
在Ubuntu下,使用bison和bison联合编译生成了一个简单计算器,文档提供了实现的详细步骤及一些常见错误。
3.5 Flex编译模式、链接模式与RSL 3.5.1 使用系统RSL—Framework 3.5.2 其他的系统RSL 3.5.3 RSL的摘要 3.5.4 使用私有RSL 3.6 小结 第4章 Flex on Java企业应用架构 第5章 BlazeDS框架详解 第6...
3.5 Flex编译模式、链接模式与RSL 3.5.1 使用系统RSL—Framework 3.5.2 其他的系统RSL 3.5.3 RSL的摘要 3.5.4 使用私有RSL 3.6 小结 第4章 Flex on Java企业应用架构 第5章 BlazeDS框架详解 第6...