Macromedia Flash文件格式(SWF)详细说明 |
【字体:小 大】 |
Macromedia Flash文件格式(SWF)详细说明 |
|
作者:未知 文章来源:网络 点击数:6650 更新时间:2011-03-02 11:47:20  |
|
p; Flash播放器会在遇到“显示帧”标签之前处理SWF文件中所有的标签。这样,显示列表将被复制到场景中,在处理下一个帧之前Flash播放器会一直处于空闲状态。第一帧的内容是第一个显示帧之前的所有控制标签操作所积累的效果。而第二个帧的内容是第二个显示帧之前的所有控制标签操作所积累的效果,依此类推。 文件压缩策略 由于SWF文件在网络中的传输日趋频繁,那么文件被尽可能的压缩将是非常重要的。有几种方法可以达到此目的。以下提到几种方法: 复用角色字典的结构能够让SWF文件的元素很方便的得到复用。例如,形状、按钮、字体或者位图可以被一次存储,多次引用。 压缩当一条线的起始坐标被假定是前一条线的结束坐标的时候,形状能够使用一种非常有效的三角编码方式压缩。距离一般也使用与最后位置的相对关系来表示。 默认值矩阵和颜色转换式通常拥有比其他结构更为通用的字段。例如:对于矩阵,转换字段是它最常用的字段,而缩放比例和旋转使用比较少。因此如果缩放字段没有出现,那么它会被默认为100%。如果旋转字段没有出现,那么就假定没有旋转。使用默认值能够缩小文件尺寸。 改变编码按规定,SWF文件只能将变化存放在状态之间。但显示列表使用的形状数据结构和位置、运动、移动模型却是相反的。 形状数据结构形状数据结构使用了唯一的结构来减小文件的尺寸以及非常有效的在场景中播放实名形状。 概要 SWF文件由头部和其后的许多标签组成。有描述标签和控制标签两种。描述标签定义了被视为角色的对象,它被定义在字典中。控制标签操作和使用角色,以及控制影片的流程。 第一章 Macromedia Flash(SWF)第7版文件格式的新特征 在这一章将描述SWF规范第7版本中的新特性 ActionScript(动作脚本)的扩展 新的ActionScript(动作脚本)字节码是在已经存在的“动作定义函数”的基础上扩展的“动作定义函数2”,它现在允许函数在寄存器里保存参数和局部变量。(版本7中“动作定义函数”字节码已经很少被用到,它将会在以后的版本被“动作定义函数2”代替)。“动作定义函数2”也使用了创建控制器和通用变量this、arguments、super、_root、_parent和_global的存储。为了支持这些改进,动作存储寄存器使用“动作定义函数2”字节码现在能够访问多达256个寄存器。 为了改进并遵从ECMA-262标准的ActionScript(动作脚本),和对面向对象程序设计提供更多的支持,版本7引入了ActionExtends(动作扩展)、ActionCastOp(动作计算操作)和ActionImplementsOp(动作实现操作)。这些文件格式的改变是为了支持ActionScript2.0。ActionExtends提供了创建两个类间的子类和超类关系的能力。通过ActionCastOp,Flash播放器版本7或者之后的版本能够将一种类型的对象转换成另一种。ActionImplementsOp为ActionCastOp指定了对象实现的接口。 版本7中ActionInstanceOf将反映出对象是否实现了一个接口。 ActionScript(动作脚本)目前通过AcitonTry和ActionThrow字节码来进行异常处理。ActionTry声明了异常条件的操作,而ActionThrow可以抛出一个已经被抛出的错误的值。 新的视频格式 Flash播放器版本7简单的支持一种新的被称作“屏幕视频位流格式”的无损视频编码,它能够让动作以最优化的方式显示在计算机屏幕。屏幕视频像Sorenson H.263位流格式,能够同时用于SWF文件和FLV文件。 Flash播放器版本7能够直接回放FLV文件,而不使用RTMP协议或者Flash Communication MX服务器。 运行时ActionScript控制 新的ScriptLimits标签提供了最大递归深度和脚本超时之前的控制。 SetTabIndex 新的SetTabIndex标签为每个Flash播放器标签顺序中的对象设置了索引。 回调事件的创建 除已经存在的ClipEventInitialize之外,ClipEventFlags顺序现在包含了ClipEventConstruct来标识创建事件。 小型文本演示 在以前,由于某种原因,小的实名文本在Flash播放器中回显示不清楚。由于在DefineFontInfo、DefineFontInfo2和DefineFont2标签中使用新的FontFlagsSmallText标记,Flash播放器版本7以及后继版本能够动态文本和输入文本字形轮廓的按照象素边界排列。 第二章 Macromedia Flash(SWF)第6版文件格式 本章描述了SWF第6版本规范中引入的特性。 文件压缩 第6版及后续版本的SWF能够通过压缩来减小它们的尺寸。这种方式的选择是由一种不同的文件头(用CWS来代替FWS)来标识。压缩方法使用了流行的ZLIB标准。 Unicode的支持 第6版及后续版本的SWF支持Unicode文本。 第6版本的SWF加入了DefineFontInfo2标签。这是对DefineFontInfo标签的一个辅助扩展。DefineFontInfo2加入了语言编码字段。同样,DefineFontInfo2标签使用了以前保留的字节来存储语言编码。语言编码的使用是为了折行和当设备字体不存在的时候来选择一种可靠的字体考虑的。 DefineFontInfo、DefineFont2和DefineFontInfo2标签在第6版及后续版本的SWF中有着不同的使用规则。角色表使用ANSI和shift-JIS编码选项已经被提出异议,因此这些标签中所有的角色表都使用了UCS-2编码。 第6版及后续版本的SWF中设备字体的名称使用UTF-8编码方式规定,而不是以前使用的现场特效编码。 第6版及后续版本的SWF中普通的STRING类型也使用了UTF-8编码来演示而不是以前使用的ANSI或者shift-JIS编码。 命名锚点 第6版引入了“命名锚点”的概念,SWF文件中的一个帧标签允许在浏览器的URL顶层使用hash(记号)来搜索一个帧,它类似于HTML页面中的命名锚点。在第6版及后续版本的SWF中,命名锚点通过在FrameLabel标签的STRING非终结符之后包含一个额外的字节来编码。 ActionScript扩展 第6版及后续版本的SWF中,DoInitAction标签包含了和SWF文件Acition(动作)一样的ActionScript字节码。但是,当DoAction标签中指定的动作被放置在堆里,并且在帧被全部绘出之前没有被激活,那么只要遇到此标签时,DoInitActions标签会被激活。DoInitAction被用来实现ActionScript语言中的initclip pragma。这对于在放置一个类定义场景里的符号的实例之前,调用register上一页 [1] [2] [3] 下一页 |
文章录入:admin 责任编辑:admin |
|
上一篇文章: 解说MP4文件压缩标准
下一篇文章: 看懂DVD文件格式 |
【发表评论】【加入收藏】【打印此文】【关闭窗口】 |