现在的位置: 首页 > 综合 > 正文

Flash文件格式(SWF)详细说明书及如何转成屏保exe格式文件

2013年08月17日 ⁄ 综合 ⁄ 共 5654字 ⁄ 字号 评论关闭

Macromedia Flash 文件格式(SWF )(读作“swiff ”)是Macromedia Flash 播放器在互联网上进行矢量图形和动画发布的文件格式。SWF 文件格式不是为图像编辑器之间共享图像而是为高效的解释格式设计的,它的设计是为了满足以下条件:

在屏幕上即时显示:此格式的最主要目标是在屏幕上即时显示和支持实例,彩色图像的快速播放,动画和交互式按钮。

可扩展性:此格式为标签式格式,因此其播放器能够通过增加新的特性来进行升级而兼容其播放器的早期版本。

网络发布:此格式能够在有限的网络资源和不可预测的网络状况下进行传输,文件被压缩到很小并且支持流式播放。SWF 文件是一种二进制格式的文件,它不能像HTML 文件一样可以直接阅读和理解。SWF 文件使用了诸如位压缩、可选字段式结构等方法来减小文件的尺寸。

简易性:此格式简单的结构使Flash 播放器变得很小且便于携带。另外,Flash 播放器仅仅依赖操作系统特性中有限的集合。

文件独立性:文件的显示不依赖任何诸如字体之类的扩展资源。

可变性:文件能够在有限的硬件环境下很好的工作,而且能够尽可能的利用更好的硬件,这一点很重要,因为用户的计算机有着不同的显示器设置和色深。

速度:文件能够以很快的速度和很高的质量播放。

支持脚本:此格式包含了约定格式的标签,标签规定了堆栈式机器解释字节码的顺序。字节码支持一种叫做ActionScript (动作脚本)的语言。Flash 播放器规定了运行时的ActionScript (动作脚本)模式,此模式允许原始的绘制、服务和Flash 播放器特性之间相互作用。

SWF 文件的扩展名为.swf ,它是一种MIME (多用途的网际邮件扩充协议)类型的应用程序(X-Shockwave-Flash )。

SWF 格式经历了若干个版本。在第5 个版本中,SWF 的标签设置经过了一次较大规模的充实和完善。从第6 个版本之后,文件格式变化较小,例如仅在ActionScript 中越来越多的Flash 新特性部分或者完全的被实现。因此,如果打算增加SWF 文件中使用较新特性的内容,那么就应该熟悉Flash 播放器提供的ActionScript 对象模型,对于这些最好的参考是OReilly 的《ActionScript: the Definitive Guide 》,由科林·莫克出版社出版。

SWF 文件头

所有的SWF 文件均以以下头部开始:

SWF 文件头

字段

类型 *

说明

签字标识

UI8

标识字符:

F ”表示未压缩

C ”表示已压缩(版本6 或后续版本)

签字标识

UI8

此标识通常为“W

签字标识

UI8

此标识通常为“S

版本

UI8

单字节文件版本数(例如,0x06 表示版本6

文件长度

UI32

整个文件的字节长度

帧尺寸

RECT

单位帧的尺寸

帧率

UI16

每秒的帧数,其16 个位是按照8.8 的格式表示的

帧数

UI16

影片的总帧数

* 此类型在基本数据类型一节中定义

文件头部 是由一个三字节的标识符开始,为0x460x570x53 (“FWS ”)或者0x430x570x53 (“CWS ”)其中之一。“FWS ”标识符说明该文件是未压缩的SWF 文件,“CWS ”标识符则说明该文件前8 个字节之后(即文件长度字段之后)的全部数据为开源的标准ZLIB 方式压缩。

ZLIB 库所使用的数据格式在19501952 年的请求注解, Internet 标准文档(RFCS )中被详细说明。CWF 文件压缩形式仅适用于版本6 或者更高。

标识符之后是一个字节的 版本号 ,这个版本号并不是一个ASCII 码,而是一个8 位的数字,比如,版本40x04 标识,而不是ASCII 码“4 ”(0x35 )。

文件长度字段是整个包含文件头在内的文件字节长度,如果是未压缩的SWF 文件(标识符FWS ),那么长度字段应该是和文件大小恰好匹配,如果是一个经过压缩的SWF 文件(标识符CWS ),那么文件长度字段是指文件经过解压缩之后的总长度,因此它一般不会和文件大小匹配,使用未压缩的文件尺寸能够让解压过程获得更高的效率。

帧尺寸字段定义了影片的宽度和高度,它使用了RECT 结构进行存储,这就意味着它的尺寸能够根据坐标编码所需的位数变化。帧尺寸的RECT 结构使用的XY 轴的最小值总为0 。而XY 轴最大值分别表示了宽度和高度(参阅位值的使用)

帧率是以帧每秒为单位的帧回放比率,此比率在SWF 文件包含流式声音数据或者Flash 播放器运行在低速CPU 下时并不会得到保证。

帧数是整个SWF 影片帧的总数量。

SWF 文件结构

文件头之后是一系列连续的标签数据块,所有的标签都共享一种通用格式 ,因此任何解析SWF 文件的程序都能跳过它不能识别的数据块。块内数据能够指向当前一个块内的偏移量,但不能指向其它数据块内的偏移量。这就使得标签能够被处理SWF 文件的工具进行移除、插入或修改操作。

SWF 文件格式

 

 

标签格式

每个标签都是由一个类型和一个长度值开始的,存在两种标签头部格式:短格式和长格式。 短标签头部用于62 字节或者更小的标签数据,长标签头部能够用于任何大小不超过4GB 的标签数据,从长远来看这将会是非常实用的。

记录头部(短)

字段

类型

说明

标签编码和长度

U16

10 位:标签类型

6 位:标签长度

注意:标签编码和长度字段并不是一个10 位的位字段后面跟着6 位的位字段,而是一个双字节的字,SWF 文件不间断的字节排序使得这两者具有不同的布局。

该字段中的长度并不包含标签开始处的记录头部(即该字段所占有的长度)。

如果标签的长度大于或者等于63 字节,那么它会被存储在长标签头部。长标签头部由一个标识长度为63 字节(0x3f )的短标签头部和一个32 位的长度组成。

记录头部(长)

字段

类型

说明

标签编码和长度

U16

以短标签头部方式存储的

长度为63 字节的标签编码和长度

长度

UI32

标签的长度

描述标签和控制标签

SWF 中的标签分描述标签和控制标签两种

描述标签这种标签描述了SWF 影片的内容—形状、文本、图像、声音等等。每个定义标签都为其描述的内容指定了一个被称为“角色ID ”的唯一ID Flash 播放器把这些角色存放在一种叫“字典”的库里。描述标签本身不能驱动某个事件的产生。

控制标签这种标签可以创建和驱动字典中角色的实例,控制影片的播放。

SWF 文件标签分类

通常,SWF 文件中的标签可以任意出现。但尽管如此,也必须遵循少数几个规则:

1 、一个标签只能依赖前面定义过的标签。任何一个标签都不能依赖在才后面定义的标签。

2 、描述标签必须在使用它的任何控制标签之前定义。

3 、流式声音标签必须以顺序方式存储。不规范的流式声音标签将会导致声音播放不正常。

4 、结束标签一般是SWF 文件的最后一个标签。

字典

字典是存放已经定义好的角色的库,它可以被控制标签所应用。字典的建立和使用应遵循以下规则:

1 、描述标签定义了诸如形状、字体、位图或者声音。

2 、每一个描述标签都被指定一个唯一的角色ID

3 、字典中的内容被存储在角色ID 之后。

4 、控制标签能够通过角色ID 在字典中找到所需内容并对其执行某种操作,例如显示形状或者播放声音。

每个角色ID 必须指定一个唯一的ID ,不允许重复ID 。例如,第一个角色ID1 ,第二个是2 。角色0 被指定为表示空角色的专用ID

并不是只有控制标签才能引用字典。描述标签同样也可以使用字典中的数据进行更复杂的角色定义。例如,按钮和剪辑标签都使用到了定义它们内容的角色。文本标签也包含了字体角色以便于为文本选择不同的字体。

 

处理SWF 文件

Flash 播放器会在遇到“显示帧”标签之前处理SWF 文件中所有的标签。这样,显示列表将被复制到场景中,在处理下一个帧之前Flash 播放器会一直处于空闲状态。第一帧的内容是第一个显示帧之前的所有控制标签操作所积累的效果。而第二个帧的内容是第二个显示帧之前的所有控制标签操作所积累的效果,依此类推。

文件压缩策略

由于SWF 文件在网络中的传输日趋频繁,那么文件被尽可能的压缩将是非常重要的。有几种方法可以达到此目的。以下提到几种方法:

复用角色字典的结构能够让SWF 文件的元素很方便的得到复用。例如,形状、按钮、字体或者位图可以被一次存储,多次引用。

压缩当一条线的起始坐标被假定是前一条线的结束坐标的时候,形状能够使用一种非常有效的三角编码方式压缩。距离一般也使用与最后位置的相对关系来表示。

默认值矩阵和颜色转换式通常拥有比其他结构更为通用的字段。例如:对于矩阵,转换字段是它最常用的字段,而缩放比例和旋转使用比较少。因此如果缩放字段没有出现,那么它会被默认为100 %。如果旋转字段没有出现,那么就假定没有旋转。使用默认值能够缩小文件尺寸。

改变编码按规定,SWF 文件只能将变化存放在状态之间。但显示列表使用的形状数据结构和位置、运动、移动模型却是相反的。

形状数据结构形状数据结构使用了唯一的结构来减小文件的尺寸以及非常有效的在场景中播放实名形状。

概要

SWF 文件由头部和其后的许多标签组成。有描述标签和控制标签两种。描述标签定义了被视为角色的对象,它被定义在字典中。控制标签操作和使用角色,以及控制影片的流程。

 

swf转exe:

 

 

代码在这:http://download.csdn.net/source/2941442 ,包含有一个网上的屏保制作工具。

这个是将flash格式转成屏保,如果要将图片转为屏保,网络上有很多工具,例如梦想之颠图片幻灯。

 

 

 

抱歉!评论已关闭.