笔袋厂家
免费服务热线

Free service

hotline

010-00000000
笔袋厂家
热门搜索:
成功案例
当前位置:首页 > 成功案例

机械网--SWF动画文件解析器设计与实现

发布时间:2021-11-15 13:23:43 阅读: 来源:笔袋厂家

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

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

如果SWF文件是以“FWS”开头则表示末被紧缩;否则,则表示是文件从第9个字节开始采取标准的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方向的最小和最大值。在其结构中,第1项为所需位数段,位于该类型字段起始字节的前5位,记录后而4项Xmin、Xmax、Ymin及Ymax中每项所占用的位数大小。(2)标签(Tag)结构分析 在SWF文件中,标签结构上要包括标签头和标签数据两个部分,且标签头后而紧跟的就是该标签的数据部分,承载了该标签所有的数据信息。其中,标签头土要包括胁力。而的信息:标签类型(目11TaglD的值)和该标签的长度。但是,由于长度大小的差异,标签头存在两种格式:短格式和长格式。 所谓短标签,其数据总长度小于或等于62字节,且该种标签其标签头占有1个烈字节的长度,其中前10位的字段用来记录标签类型,后6位则记录该标签头后的标签数据长度。而对长标签,其标签头结构分为胁部分:前16位数据结构和短标签头结构类似,刚其中的前10位字段也用来记录标签类型,后6位则记录了1个标识该标签为长标签且大小为63(0x3f)的数据政府非法征收土地怎么办,其后1个无符号32位数据才是该类标签所带有数据的实际长度。 SWF文件中所有的标签,根据其本身的信息依照各自的功能可划分为:捕述标签和控制标签。其分类详见如图2。

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

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

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