SWF文件格式2(中文翻译版)
来源:互联网 发布:js禁止文本框输入 编辑:程序博客网 时间:2024/05/16 07:29
接上一篇
SWF文件结构(SWF file structure)
文件头之后,就是一系列的Tag数据块。所有的Tag使用同一个格式。所以在用程序解析SWF的时候可以跳过不懂的Tag块。Tag块中的数据偏移量只能在自己的数据块内,而不能超出到其他Tag数据块。这个特性可以让我在处理SWF的时候,移除,插入或者修改Tag。文件属性Tag(FileAtrrributes tag)仅仅在SWF 8和之后的版本支持。![SWF 文件结构](http://img.blog.csdn.net/20160303153216377)
Tag格式
每一个Tag使用一个Tag类型和长度开头。Tag头可以是长类型或短类型。短类型的Tag头用于62个字节或更少的数据的Tag。长类型Tag头是用一个32位符号数来表示长度,可以用于高达2GB的Tag数据,远远高出目前实际使用的空间。
————————————————————————————————————————
Tag头(短)
字段 类型 注释
————————————————————————————————————————
TagCodeAndLength UI16 高10位:Tag类型
低6位:标签长度
————————————————————————————————————————
提示:TagCodeAndLength 是一个双字节的字,不是一个10位二进制后面跟着6位二进制。低位优先的编码顺序使得这两种布局不一样
如果一个标签是63字节或者更大,它将使用Tag长类型头。长Tag头由短Tag头+一个32位的符号整数
————————————————————————————————————————
Tag 头(长)
字段 类型 注释
————————————————————————————————————————
TagCodeAndLength UI16 高10位:Tag类型
低6位:固定为111111
Length SI32 Tag长度
————————————————————————————————————————
定义型和控制型Tag
Tag可以分为两种类型:定义型Tag和控制型Tag。定义型Tag 定义SWF 文件中的 shapes,text,bitmaps,sounds等内容。每一个定义型Tag分派了一个唯一的character ID来来指向它的内容。Flash Player 将这些character 存储在一个dictionary中。定义型Tag并不会主动去渲染。控制型Tag 创建dictionary中的character的实例,操纵其渲染,控制文件流。
SWF文件中Tag的顺序
一般而言,Tag可以以任何顺序存储在SWF文件中。然而,你必须遵循下面的规则:
- FileAttributes Tag 必须是SWF文件中的第一个Tag(SWF8及之后的版本支持)。
- Tag 依赖的Tag只能在文件中只能排在其前面,而不能后面。
- 如果一个定义型Tag定义了一个character,一个控制型Tag对这个character有引用,那么这个定义型Tag必须排在这个控制型Tag之前。
- 流媒体sound Tag必须是有序的,无序的将会导致播放错误。
-End Tag必须排在SWF文件最后。
Dictionary
dictionary是用来存储已经定义过的character,供控制型Tag使用。构建和使用dictionary的过程如下: 1. 定义型Tag定义一些内容,例如shape,font,bitmap,或者sound。 2. 定义型Tag分派一个唯一的Character Id 给定义的内容。 3. 定义的内容以Character Id为键值存储在dictionary中。 4. 控制型Tag通过Character Id 来获取dictionary中定义好的内容,做一些操作,例如展示一个shape,或者播放一个声音sound。每一个定义型Tag必须指定一个唯一的ID,重复的ID是不允许的。代表性的做法:第一个Character Id 是1,第二个Character Id 是2,等等。0是特殊的会被当成一个null character。不仅仅是控制型Tag可以引用这个 dictionary。定义型Tag也可以通过dictionary中的character,来构建更复杂的character。见下图![这里写图片描述](http://img.blog.csdn.net/20160303174907197)
Processing a SWF file(处理SWF文件)
Flash Player会一直处理所有的Tag,直到遇到ShowFrame Tag。这时显示列表将会复制到屏幕上,Flash Player会保持空闲状态一直到进入下一帧。第一帧展示的内容由第一个ShowFrame Tag之前的所有控制型Tag循环处理后的最终表现。第二帧的内容由第二个ShowFrame Tag 之前的所有控制型Tag循环处理后的最终表现。依次下去。
到此第二章基本结束。
- SWF文件格式2(中文翻译版)
- swf文件格式1(中文翻译版)
- SWF文件格式详解(1)
- swf文件格式解析(一)
- swf文件格式解析(二)
- swf文件格式解析(一)
- swf文件格式解析(二)
- SWF文件格式
- SWF9文件格式规范中文翻译(一)
- focus.swf改进版支持png,gif,swf等文件格式
- Macromedia Flash文件格式(SWF)详细说明书
- swf文件格式说明书(中文+英文)
- swf文件格式说明书(中文+英文)
- Macromedia Flash文件格式(SWF)详细说明书(现归Adobe公司所有) 1、2章
- SWF文件格式说明书--字典
- SWF文件格式说明书(四)
- SWF与FLV文件格式
- SWF文件格式解析
- 设置openwrt应用程序开机和崩溃时自动启动
- 彻底卸载Mysql 服务器
- 一致性哈希java实现
- 可编辑可自动匹配的联动下拉框实现
- mybatis插入数据之后获得主键值
- SWF文件格式2(中文翻译版)
- Animation动画详解(九)——联合动画的代码实现
- 尽量用static const替代预处理指令
- leetcode--Reverse Bits
- 第一天
- 微信公众平台开发教程
- Android逆向分析(2) APK的打包与安装背后的故事
- 读《借助开源项目,学习软件开发》总结
- The 9th Zhejiang Provincial Collegiate Programming Contest->Problem D:D - Draw Something Cheat