关于SWF文件格式分析及SWF.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于SWF文件格式分析及SWF.doc

关于SWF文件格式分析及SWF 转自:CSDN ??初次接触这个问题是为了完善我自己做的flashplayerV1.02的最后一个功能,也就是EXE-SWF的转换功能.当时并不知道文件转换机制是什么,更对SWF文件格式也一窍不通.^_^我相信也有好多朋友和我遇到了一样的问题吧,以下就我自己积累的一些经验,以及别人对我的帮助.来谈一谈这个问题. 首先.我们来看一下SWF文件头格式:(以下为我的资料收集) 以一个实际的SWF文件头为例: 46?57?53?05?B4?66?07?00?70?00?0F?A0?00?00?BB?80 00?0C?9F?03 转自:CSDN ??初次接触这个问题是为了完善我自己做的flashplayerV1.02的最后一个功能,也就是EXE-SWF的转换功能.当时并不知道文件转换机制是什么,更对SWF文件格式也一窍不通.^_^我相信也有好多朋友和我遇到了一样的问题吧,以下就我自己积累的一些经验,以及别人对我的帮助.来谈一谈这个问题. 首先.我们来看一下SWF文件头格式:(以下为我的资料收集) 以一个实际的SWF文件头为例: 46?57?53?05?B4?66?07?00?70?00?0F?A0?00?00?BB?80 00?0C?9F?03 字节?1-3?(46?57?53):?SWF文件头标志,FWS表示未压缩,CWS表示压缩的SWF文件,需要从第9个字节起用ZLib解压 字节?4?(05):?Flash文件的版本,这里表明它是用Flash5生成的 字节?5-8?(B4?66?07?00):一个Integer表示文件的长度,低在前,高在后,这里是$000766B4?=?485044字节,这里应该等于未压缩的SWF文件实际大小或压缩过的SWF解压后的长度+文件头(8字节) 字节?9?-?。。。:?SWF显示区域,(左上角坐标,右下角坐标),用下面的方法计算得到:第9字节前5位(70?shr?3?=?14),以后的字节以14位进行分割,所需位数为?14*4+5?=?61,需要?8?个字节来表示,那么: 70?00?0F?A0?00?00?BB?80 01110?00000000000101000000000000?01011101101110?00000000000000?01111101000000?00000000000000?01011101110000?000 14?0?8000?0?6000? 因为Flash的坐标是TWIP格式的,需要除以20的,所以实际为(0,400,0,300) 接下来的两字节?(00?0C):表示帧速率,前一字节表示小数位,后一字节表示整数位,不过一般极少有小数位的帧率,所以一般我们只计整数就可以了,这里?$0C?=?12,即每秒12帧再接下来的两字节?(9F?03):表示总帧数,WORD类型,$039F=927帧,与ShockwaveFlash.TotalFrames?得到的数值是一样的。 再后面的数据是SWF的实体数据 接着:我们来看EXE文件的真正面目.其实EXE的SWF并不存在什么文件格式转换的问题,SWF文件之所以能变为EXE文件,无非是加入了一些流的操作罢了.下面让我们看看EXE文件的由来,简单的说:?EXE格式的SWF文件不过是一个Flash播放器程序后面跟着一个SWF文件,两个文件写在一起,然后再在文件末尾写入SWF文件的大小和FA123456标示。故SWF-EXE的转换机制其实就这么简单. 而EXE-SWF呢,无非就是从文件末尾得到内嵌的SWF文件大小,然后新建一个空白的扩展名为.swf的文件,把内嵌的SWF文件写入这个新文件就可以了! 明白的这些以后,我想就SWF与EXE的转换也就不难了吧.(关键是一些流操作) 以下我给出一些流操作的函数及用法: 一、Delphi中流的基本概念及函数声明 在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法。 TStream类中定义的属性介绍如下: 1、Size:此属性以字节返回流中数据大小。 2、Position:此属性控制流中存取指针的位置。 Tstream中定义的虚方法有四个: 1、Read:此方法实现将数据从流中读出。函数原形为: Function?Read(var?Buffer;Count:Longint):Longint;virtual;abstract; 参数Buffer为数据读出时放置的缓冲区,Count为需要读出的数据的字节数,该方法返回值为实际读出的字节数,它可以小于或等于Count中指定的值。 2、Write:此方法实现将数据写入流中。函数原形为: Function?Write(var?Buffer;C

文档评论(0)

zcbsj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档