设为首页 收藏本站 English

当前位置: 裕能五金网 >> 便携式仪器

SWF动画文件解析器设计与实现摇臂轴

发布时间:2022-07-13 22:11:09

SWF动画文件解析器设计与实现

SWF动画文件解析器设计与实现 2012年09月06日 SWF,即S图ockWave Flas图,是以流控制技术和矢量技术等为代表,将矢量图、位图、音频、动画和深一层交互动作有机地、灵活地结合在一起,从而制作出美观、新奇、交互性更强的动画效果。其最初的开发者一是乔纳森-盖伊(Jonathan Oay)等人,图前已发展到了10版本。伴随着Flas图技术的不断向前发展,SWF动画以其形象生动、短小精悍、承载信息量大、操作较简易等特点而被人们广泛应用于动漫设计、游戏开发、多媒体娱乐及互动教学等多个方面。因而,研究与剖析SWF动画文件,对于获取文件中各个元素信息及识别动画信息具有现实意义。本文在对SWF动画文件分析与研究的基础上,通过编程实现了对SWF文件的解析与文件信息的读取。1、 SWF动画文件分析 SWF文件具有结构简单、独立性强、扩展性能高及网络传输便捷等多个特点,能以很少字节量实现高质量的矢量图形和交互式动画、音视频的制作,且可嵌入到网页中直接播放,并在各种质量的网络带宽下都能拥有同样出色的呈现效果。 SWF文件中存放的主要是一系列捕述标签Definition Tags、控制标签Control Tags以及公共信息,且都存放在SWF文件的特定位置,其基本结构如图1。

(1)文件头(Header)结构分析 所有的SWF文件的最前面,都是一个标准格式的文件头,它包括了SWF文件的标识符、版本号、文件大小、影片尺寸。帧速率与总帧数等,其结构详见如表1。

如果SWF文件是以“FWS”开头则表示末被压缩;否则,则表示是文件从第九个字节开始采用标准的ZLIB压缩办法进行压缩。同时,该部分数据还涉及到了5种数据类型:UI8、UI16、UI32、8.8定点方式以及RECT等。其中,UI8表示占1个字节的无符号8位数;UI16表示占2个字节的无符号16位数;UI32表示占4个字节的无符号32位数;8.8定点方式表示其在存放时占用了曲个字节,且以Bytel.Byte2方式存储;对于帧尺寸的RECT类型,其是以twip为单位分别记录了帧X、Y方向的最小和最大值。在其结构中,第一项为所需位数段,位于该类型字段起始字节的前5位,记录后而四项Xmin、Xmax、Ymin及Ymax中每一项所占用的位数大小。(2)标签(Tag)结构分析 在SWF文件中,标签结构上要包括标签头和标签数据两个部分,且标签头后而紧跟的就是该标签的数据部分,承载了该标签所有的数据信息。其中,标签头土要包含胁力。而的信息:标签类型(目11TaglD的值)和该标签的长度。然而,由于长度大小的差异,标签头存在两种格式:短格式和长格式。 所谓短标签,其数据总长度小于或等于62字节,且该种标签其标签头占有一个烈字节的长度,其中前10位的字段用来记录标签类型,后6位则记录该标签头后的标签数据长度。而对于长标签,其标签头结构分为胁部分:前16位数据结构和短标签头结构相似,刚其中的前10位字段也用来记录标签类型,后6位则记录了一个标识该标签为长标签且大小为63(0x3f)的数据,其后一个无符号32位数据才是该类标签所带有数据的实际长度。 SWF文件中所有的标签,根据其自身的信息按照各自的功能可划分为:捕述标签和控制标签。其分类详见如图2。

(3)SWF动画文件结构与其播放的关系分析 在介绍充SWF文件头及文件标签结构后,现在对SWF动画文件的播放进行分析。如上介绍,SWF文件头记录了该动画文件所需的播放环境;而文件中的标签则详细记录了动画播放所需要的所有元素,及各元素播放的先后顺序。除了文件头及文件标签外,要想顺利实现动画文件的播放与呈现,还需要将这曲部分信息进行整合——字典与显示列表。如图3,展现了播放器依次渲染与呈现文本、字体和形状的过程,以及在此过程中描述标签、控制标签与字典、显示列表之间关系。

2 、SWF动画文件解析的实现(1)文件的整体解析设计 以上对动画文件做了详细分析后,针对SWF动画进行深入解析。如图4,在理清SWF文件结构特点后,可得整个文件的解析流程。 解析的过程如下:(1.)通过一个“.swf’的文件滤器成功打开一个SWF动画文件,若打开失败则结束解析;(2.)对SWF文件头进行解析,并在读取文件头前。部分的数据信息的同时,判断SWF文件是否有被压缩.(3.)若文件被压缩,则先调用ZLIB解压包对文件解压,然后继续读取此后文件头数据,否则直接对剩余文件头数据进行读取;(4.)读取文件中各个标签的信息,并判断该标签是否为文件结束标签,若不是则对该标答数据进行相应处理(5.)当遇到结束标签时,即释放空间,并回收资源。至此整个SWF文件就解析完了。(2)文件解析实现 根据图 4解析流程图,玑用程序实现对SWF文件的解析,其效果如图5。其中,解析重点土要有曲个阶段:文件头解析和文件标签解析。由于CWS格式文件只比FWS格式文件多了ZLIB解压这一步,此处将详解FWS格式文件。

参照2.1中的分析,可以快速分析并获取前8个字节的信息。现在对帧尺寸大小RECT型数据进行分析与计算,其详细处理过程为:(1)从第9个字节开始,向后读取。个字节的数据;(2)将读取的数据右移3位,刚为RECT后四项每一项所占用的位数a;(3)根据公式b=5+a×4即可计算出整个RECT数据共占用位数;(4)若占能被8整除,则整除后数据刚为RECT数据所字节数,否则整除后加1即为所求;(5)根据(4)所求字节数大小,从第9个字节开始读出该字节长度的数据,并对读出的数据进行转换。此后数据为帧速率,只需将数据读取出来后做相应小数点处理即可。最后为帧总数大小,此部分和前8个字节一样,只需紧接帧速率数据后读取胁个字节即可。 在解析充SWF文件头后,现在对文件标签进行解析。参照1.2文件标签解析规则,依据各标签在文件中出现的先后次序,可依次将各标签的Tag类型号、数据长度及偏移字节数等信息读取出来,并做相应处理。其中,为得到各标签类型号及数据长度,需对数据做如下处理:(1)先读取标签的前两个字节数据.(2)将读取的数据右移6位,此时所得新数据刚为标签类型号.(3)判断标签是否为短标签,若是则标签实际长度刚为(1)中所读取数据与0x3F相与的结果,否则,从(1)所读取数据的后4个无符号字节数据刚为该标签实际的长度。为了将文件中所有的标签数据都读取出来,程序中可采用一个循环来实现。当遇到TagID=0的标签时,SWF文件结束,此时结束解析,并回收资源。3 结语 本文以SWF动画文件结构为切入点,从SWF文件头结构、标签结构以及动画播放的实现原理等三方面入手,重点实现了对SWF动画文件头及标签的解析,并在此基础上,设计了一个SWF文件解析器,实现了对SWF文件的整体解析与信息提取。随着Flas图技术的向前不断发展,解析SWF动画文件及对其信息进行提取,对于识别动画信息具有现实意义。

广西玉林市鼎诚房地产有限公司

灌溉塑料水管价格

套装一次性塑料餐具价格

遮光隔热窗帘布

中风偏瘫治疗仪价格

护腕鼠标垫价格

监利县欢乐购超市

万圣节袜子

大庆海升企业管理咨询有限公司

天线防盗价格

友情链接