`
sealbird
  • 浏览: 584912 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解析SWF文件头中的Rect结构

    博客分类:
  • Flex
 
阅读更多
作者:Seven_Yuan  来源:博客园  发布时间:2010-04-28 18:13  阅读:500 次  原文链接   [收藏]  
转自:http://www.wwswf.com/?p=897



swf头中的Rect结构是按照位进行存储的,而不是字节,因为存储的值是跨字节的,而且存储的单位是twip,相当于二十分之一像素。

Rect结构中包含四个信息,按照顺序依次为:Xmin、Xmax、Ymin、Ymax,分别表示 X,Y轴方向上的最小和最大值。

Rect中前五位表示一个长度信息n,就是其中要存储的四个值所占用的长度,即从第六位开始,第一个n位表示Xmin,第二个n位表示Xmax,依次类推,直到取到存储的4个值,字节未用完的部分补0。

举个例子:
swf的头如下所示:

PLAIN TEXT
JAVA:
46 57 53 0A 4C 15 00 00 78 00 05 5F 00 00 0F A0 
00 00 12 01 00 44 11 18 00 00 00 7F 13 04 05 00
开始3个字节为FWS,0A为10,表示版本号,“4C 15 00 00 ”为文件大小,从"78"开始即可读Rect结构。
“78”的二进制代码为:01111000,前5位就是01111,十进制值为15,就是说从第六位开始,每隔15位表示一个swf尺寸值。

“78 00 05 5F 00 00 0F A0”用二进制表示为:

PLAIN TEXT
JAVA:
01111 000000000000000 010101011111000 000000000000000 00111110100000
那么000000000000000 十进制为0,表示Xmin,010101011111000十进制值为11000,换算成像素为550,表示Xmax,最后面的00111110100000只有14位,比15位少了一位,所以需要从后面一个字节拿一位过来,后面的字节16进制值为00,二进制值为00000000,被借了一位,那么剩余的7位都废了,即属于补0部分,至此Rect结构就结束了。

之后的00 12表示帧率,由于swf是反序存入的,所以应该按照12 00转换为十进制,即为4608,4608/256=18(因为低8位是小数,所以需要除以2的8次方),swf的帧率即为18.

再之后两位是01 00,反序之后十进制即为1,swf总帧数为1.

分享到:
评论

相关推荐

    swf文件格式说明书/中文+英文

    #### 二、SWF 文件结构解析 ##### 1. 文件头 (Header) 文件头是SWF文件的第一个组成部分,用于提供文件的基本信息,主要包括文件签名、版本号和文件长度。 - **文件签名 (Signature)**:由三个字节组成,可以是`...

    SWF文件格式翻译[归纳].pdf

    SWF文件格式是一种广泛用于互联网上展示...为了创建和解析SWF文件,开发者需要理解其内部结构、基本数据类型、标签系统以及ActionScript语言。通过掌握这些知识,可以开发出利用SWF格式的游戏、动画和其他互动内容。

    Flash动画SWF诠释与调用.doc

    SWF文件结构包含一个文件头和文件主体。文件头由签名字段("FWS"或"CWS",分别代表非加密和加密)以及版本号组成,用于标识文件类型和对应播放器版本。接着是文件长度,用于指示整个SWF文件的大小,然后是帧尺寸...

    GDI+丰富RECT

    标题中的“GDI+丰富RECT”指的是在Windows编程中,使用GDI+图形设备接口(Graphics Device Interface Plus)扩展和操作RECT结构的过程。GDI+是Microsoft为Windows应用程序提供的一种强大的2D图形处理库,它提供了比...

    一维rect函数的matlab程序

    一维rect函数的matlab程序 可以为初学者提供一定的参考

    rectbox_rectbox_decidevm6_matlab矩形绘图_绘图_matlab_

    在压缩包中,有两个文件:`rectbox.m`和`rectbox_test.m`。`rectbox.m`是`rectbox`函数的源代码,包含了实现这个功能的具体算法和逻辑。而`rectbox_test.m`则是一个测试文件,用于验证`rectbox`函数的功能是否正常,...

    swf.rar_swfparser

    SWF文件RECT算法PHP代码 要从SWF文件里扣些东西,看了整整2个星期的文件格式说明了……还没看完-_-# 不过找到规律也已经能解析的差不多了,刚开始看这个结构实在是有点晕,其实可以跳过去的,不过要是写一个完整的...

    Recton v2.0

    在压缩包文件列表中,我们看到"Recton.exe",这通常是Windows平台下的可执行文件,表明Recton v2.0是为Windows系统设计的。用户只需运行这个文件,即可启动Recton的安装过程或直接运行程序。不过,具体的功能和使用...

    swf.rar_VC SWF_VC s_vc SWF_vc swf_vc swf

    标题中的"swf.rar_VC"和描述中提到的"SWF_VC"暗示了这是一个关于使用Visual C++(VC)开发的程序,目的是在Windows环境中播放SWF(ShockWave Flash)文件。SWF是一种广泛用于互联网的动画和多媒体格式,常见于网页上...

    Rect类的使用

    在计算机编程,尤其是在图形处理和游戏开发领域,`Rect` 类是一个常见的概念,它通常用于表示二维空间中的一个矩形区域。在许多编程语言和库中,如C++的`SDL`库、Python的`pygame`库或者Unity引擎中,都有`Rect`类的...

    recton3.0.rar

    至于压缩包内的文件列表只给出了 "recton3.0",这可能是一个单一的可执行文件(如 ".exe"),也可能是包含多个文件和文件夹的结构,如配置文件、库文件、帮助文档等。通常,软件安装包会包含安装指南、许可协议、...

    ProtobufTool_Rect

    标题中的"ProtobufTool_Rect"很可能是一个针对protobuf协议编解码工具,专门处理与矩形相关的数据结构。protobuf,全称Protocol Buffers,是Google开发的一种数据序列化协议,广泛应用于分布式系统、网络通信和数据...

    DRAWITEMSTRUCT结构体解析.rar_MFC_PDF结构解析_Windows编程_producteqr_vc++

    总的来说,"DRAWITEMSTRUCT结构体解析.rar_MFC_PDF结构解析_Windows编程_producteqr_vc++"这个主题涵盖了Windows GUI编程中的自定义控件绘制,PDF文件的解析以及可能的VC++项目开发实践。理解和掌握这些知识点对于...

    IntRect.rar_intrect

    在`IntRect.cpp`和`IntRect.h`文件中,我们可以找到关于这个类的实现和声明。`IntRect.cpp`可能包含了类的方法实现,如构造函数、面积计算、相交判断等功能,而`IntRect.h`则会声明类的接口,供其他源文件引用。 在...

    前端开源库-rect-crop

    - **引入库**: 开发者需要在项目中引入rect-crop库,可以是通过CDN链接或者下载库文件后本地引入。 - **初始化组件**: 创建裁剪实例,传入图像元素以及必要的配置参数,如初始缩放比例、裁剪框大小等。 - **事件...

    Recton V2.5(远程控制)

    至于压缩包中的"Recton V2.5(远程控制)"文件,这很可能是软件的安装程序或者便携版程序,用户下载后可以按照指示进行安装和使用。 在使用远程控制软件时,务必遵守相关法律法规,尊重他人的隐私,并确保自己的行为...

    前端开源库-rect-clamp

    在压缩包"rect-clamp-master"中,一般包含了rect-clamp库的源代码、示例、测试文件以及README文档等资源。通过阅读README,你可以了解到如何安装、配置和使用这个库。源代码部分通常分为JavaScript和CSS,分别处理...

    知识共享-Android_开发Rect(雷惊风).

    ### Android开发中的Rect应用详解 #### 一、引言 在Android开发中,绘图是一项基本且重要的功能。本文将详细介绍如何使用`Rect`类在Android应用中进行绘图操作,包括绘制实心矩形、空心矩形、文本以及图片等元素。...

    Recton2.5远控

    "Recton2.5远控"是一款远程控制软件,它允许用户通过网络对另一台计算机进行操作和管理。远程控制软件在IT行业中有着广泛的应用,例如远程技术支持、远程办公、远程教育等场景。Recton v2.5作为该软件的一个版本,...

    解决UI的Prefab文件根节点RectTransform无法保存和读取的bug

    创建一个空场景,只添加一个Canvas,把这个场景设置到ProjectSetting中的UI Environment中。 把这个脚本拷贝到Unity项目中,完美解决

Global site tag (gtag.js) - Google Analytics