SWF文件基本数据类型Basic Data Types

swf文件里面有很多复杂的数据类型,但是这些复杂的数据类型都是由一些基本的数据类型组成的。

一、坐标和缇

swf文件格式用整数来存储坐标,它的单位默认的是缇(twip),20 twip=1 pixel。这点和VB是类似的。在没有缩放的情况下,就是100%播放时,swf中的一个逻辑像素和屏幕上的一个像素是对应的。使用缇的好处就是能够获得比使用像素更高的精度。比如,一个800twips宽,400twips高的矩形,就会被解释成40×20像素的大小,这时矩形的边缘是没有锯齿的。如果是790×390twips的话,它的就会有轻微的模糊边缘。

在swf的坐标系里面,它采用的是传统的图像的坐标,x轴是水平方向,并且是从左到右值是增大的;y轴是垂直方向的,并且从下到上是增加的。

二、整数类型和位顺序

swf文件中使用的8位、16位、32位、64位有符号和无符号的整数。这些整数在swf文件中是以

little-endian的顺序来存储的,而每个字节的每一位则是按big-endian的顺序来排列的。

比如一个32位的整数:0x456e7120

它在文件中就是以

20 71 6e 45

的格式存储的,这种方式就称为little-endian,而其中每个字节的每一位则是按big-endian的形式来存储的。little-endian主要用在我们现在的PC的CPU中,big-endian则应用在目前的Mac机器中(是指Power系列处理器)。并且在swf文件中,所有整数必须是位齐的。

三、定点数

swf文件格式支持两种类型的定点数:32位定点数和16位定点数。32位定点数的格式是16.16格式的,小数点前面和小数点后面的每一部分各占2个字节。并且也是采用了little-endian的形式。比如一个32位的浮点数:7.5=0x0007.8000在文件中就是以00 80 07 00的形式存储的。

16位的定点数和32位的是类似的,采用8.8格式,也是little-endian的形式。16位的定点数是在Flash8及其以后版本中才被支持的。

四、浮点数

swf8及其后续的版本中支持和IEEE Standard 754兼容的浮点数类型。一共有三种类型,分别是:Half-precision (16-bit)floating-point number、Single-precision(32-bit)单精度、Double-precision (64-bit)双精度。除了半精度的这种浮点型数据以外,其它两种都符合IEEE Standard 754的标准。半精度的也是和IEEE Standard 754类似的,只是改变了标准中分配给尾数和指数的位数。在半精

度型的浮点数中,一位作为符号位;5位是分配给指数部分,实际的指数是5位数表示的数和16的差值;剩余的10位用来表示尾数。

五、位值

位值是用多少位来表示一个数值是不确定的,也就是说,表示值的时候,位数是可变的。它可以表示三种类型的数值:无符号整数、有符号整数和有符号的16.16格式的定点数。位值不是位齐的,而其它一些数据类型,比如前面提到过的无符号整数等都是必须位齐的。如果一个位齐的数据类型后面跟着一个位值,那么最后几位如果不能填满的话,应该用0补齐。

并且以上这些数如果需要扩展的话,是按符号扩展来进行扩展的。

六、字符串类型

字符串类型就是指以空字符结尾的字符的序列。字符值的格式就是一些字节的序列,这个序列以空字符字节结束。

在swf5及以前的版本中,字符串类型不是使用ANSCII编码就是采用shift-JIS(a Japanese encoding)。并且我们没有办法确定它到底采用的是哪种编码方式,具体如何解码是由播放的时候,播放器根据本地的情况自动检测的。这样就很容易出现错误。在swf6及以后版本中,字符串的值经常使用Unicode UTF-8编码。它是一种多字节的编码方式,它对字符编码使用1-4个字节。UTF-8编码是ASCII的一个超集,在0-127之间的字符排列顺序是按照ASCII中的顺序来进行排列的。UTF-8保证除了空字符以外的所有字符都使用一个以上的字节来表示,并且这些字节里面没有一个字节的值为0。空字符用一个字节来表示。这就保证了在一个字符串里面不会出现不希望出现的空字符。

WideCharToMultiByte(CP_ACP,0,filebuffer+1,length/2,str,100,NULL,NULL);//length/2是unicode字符的个数。

七、语言代码

一个语言编码标识了一种口语,语言代码和swf文件格式中的字体的定义有关。但是它不决定文本的编码,它仅仅是标识了一种口语。它在swf文件中占有一个字节。Flash播放器利用语言代码来确定动态文本框中的换行规则,并且用来确定在当前设备字体不存在的时候选择什么样的替换字体。如果语言代码为零的话,这个语言代码就由播放器根据计算机的区域设置自动判断。

Flash播放器能够识别的语言代码一共有一下几种:

1.拉丁字符,包括西方的一些语言,比如英语、法语、德语等等。

2.日语

3.韩语

4.简体中文

5.繁体中文

swf文件中的基本数据类型:

1、坐标和缇Coordinates and twips

swf文件格式以整数形式存储x-y坐标,通常使用一种叫做twip的度量联合。在swf格式中,1twip等于1/20逻辑象素。在无缩放状态下,当文件以100%大小播放时,1逻辑象素跟1屏幕象素相等。

比如,一个800twips×400twpis的矩形大小就是40×20逻辑象素。使用象素大小一些情况下会有失真现象。一个790×390twips的矩形(也就是39.5×19.5象素)会出现细小的模糊边框。

Twips是在大小和精度之间协调的好方式。

SWF文件格式中的坐标采用传统的图形轴:x是水平的,最小值在左边。y是垂直的,最小值在上面。

2、整数类型和位顺序Integer types and byte order

swf文件格式使用8位、16位、32位、64位,有符号型、无符号型整数类型。存储在swf文件中的­所有整数­采用

little-endian(小尾)字节顺序:低位在前,高位在后(the least significant byte is stored first, and the most significant byte is stored last,),跟Intel x86结构一样。而­字节内的位­则使用big-endian(大尾)顺序:高

位在前,低位在后。比如:32位数值0x456e7120被保存为20 71 6e 45。16位数值0xe712被存储为12 e7。

所有的整数类型必须字节对齐。也就是说,一个整数的第1位必须存储在SWF文件一个字节的第1位。

使用传统的2's-complement位类型表示有符号型整数。在2's complement系统中,负数的第1位必须是1,而0和整数的第1位是0。一个负数,-n,被表示为非负整数n-1的按位取反。

类型                          描述

SI8                       8位有符号整数

SI16                      16位有符号整数

SI32                      32位有符号整数

SI8[n]               长度为n的8位有符号整数数组

SI16[n]              长度为n的16位有符号整数数组

UI8                       8位无符号整数

UI16                      16位无符号整数

UI32                      32位无符号整数

UI8[n]               长度为n的8位无符号整数数组

UI16[n]              长度为n的16位无符号整数数组

UI24[n]              长度为n的24位无符号整数数组

UI32[n]              长度为n的32位无符号整数数组

UI64[n]              长度为n的64位无符号整数数组

3、定点小数Fixed-point numbers

SWF文件格式支持2种类型的定点小数:32位和16位的。

32位定点小数是16.16,也就是,高16位表示数字的整数部分,低16位表示小数点后的部分。定点数的存储格式跟32位整数一样(使用little-endian字节顺序),并且必须要位对齐。比如:实数7.5等于0x0007.8000,存储顺序是00 80 07 00。SWF8及后续版本支持16位8.8形式的定点小数。高8位表示小数点前的部分,低8位表示小数点后的部分。

定点小数类型

类型                 描述

FIXED          32位16.16定点小数

FIXED8         16位8.8定点小数

4、浮点小数Floating-point numbers

SWF8和以后的版本支持IEEE标准754浮点类型。

浮点小数类型

类型               描述

FLOAT16     半精度16位浮点小数

FLOAT       单精度32位IEEE标准754兼容

DOUBLE      双精度64位IEEE标准754兼容

转载于:https://www.cnblogs.com/qdlgx/archive/2008/09/03/1282540.html

SWF文件基本数据类型相关推荐

  1. 《Swf文件的那些事》—as函数跨平台的交互详解

    as函数调用交互 随着2020年的到来,flash也逐渐不被各大平台所使用,今天就来讲讲swf文件的交互使用方式 这篇文章纯属技术探讨,请勿用于非法用途.转载请说明来处 写在前面 先说说我为什么会写这 ...

  2. 局域网怎样自动安装FLASH插件(浏览器不安装flashplayer都可以浏览.swf文件)

    2019独角兽企业重金招聘Python工程师标准>>> 一般在网页里插入一个FLASH的代码是这样的: <object classid="clsid:D27CDB6E ...

  3. object标签与embad掉钱_使用object或embed标签来播放SWF文件

    要在 Web 浏览器中显示 SWF 文件,HTML 文档必须使用具有正确参数的 object和 embed 标记. 注:可以通过在"发布设置"对话框中选择"HTML&qu ...

  4. SWF文件加密、混淆

    简单说下SWF文件的混淆原理,(已经明白的请跳过本段):我们的AS源代码被编译完成后,SWF内部会形成一个字符串映射表,包含源码里出现的所有字符串(类名,包名,成员变量名,常量等).一个数字(相当于地 ...

  5. 导出的swf文件显示 不出来地图

    问题: arcgis工程,导出来的发行版(swf文件)显示地图出错,一片空白 解决方案: 1.跨域访问问题. arcgis 10   文件夹:arcgis安装目录java\manager\web_ou ...

  6. flash AS3.0访问加载的SWF文件中的属性、方法以及类、库中的影片剪辑

    对于FLASH,我们可以把任何的可视化元件都看成某个类文件的具体实例,包括swf文件. 我们可以把swf文件看成一个类的具体实例,而它里面拥有个个其他类的实例对象,例如: 我们新建一个loaded.f ...

  7. 使用Chrome打开http://www.cutv.com/demo/live_test.swf页面时swf文件自动下载问题

    做流媒体开发的朋友们,可能经常使用cutv网页播放器去进行一些播放测试操作. 网页播放器播放地址:http://www.cutv.com/demo/live_test.swf 同事在使用Chrome浏 ...

  8. sharepoint页面嵌入_在SharePoint 2010页面中嵌入SWF文件

    在SharePoint 2007之前的版本中,我们可以像在普通的html页面里一样,在SharePoint页面中插入Flash文件.但是,当我在2010里做相同的工作时却发现始终是提示"没有 ...

  9. php获取flash上传视频文件大小,php解析flash文件(.swf文件)获取其长度和宽度

    简单举例: //引入该文件 Require('swfheader.class.php'); //创建一个类的实例 $swf = new swfheader(false); //false 参数意思是禁 ...

最新文章

  1. 计算机网络实验可变长子网掩码,计算机网络实验3-子网掩码与划分子网实验报告.docx...
  2. python快速编程入门教程-终于懂得python快速编程入门教程
  3. 蔡先生论道大数据十九:王羲之与大数据
  4. SpringBoot: xxxx for method parameter type String is not present]
  5. 设计模式:各个模式间的对比
  6. 怎能错过这个技术集市!转发有奖,惊喜连连!
  7. 洛谷——P1317 低洼地
  8. python 在window 系统 连接并操作远程 oracle 数据库
  9. VB.NET 读写HTML 文件,VB.NET 简单介绍文件的读写----流类
  10. oracle分组取第N条,ROW_NUMBER() OVER的用法
  11. 百度推广 计算机访问url,百度推广助手批量设置完整的访问URL的方法
  12. 电子计算机x射线断层扫描,CT——电子计算机X射线断层扫描技术.pdf
  13. this的指向为什么是undefined
  14. OpenBSD5.2安装图形界面
  15. arcgis属性表中的某一字段保留1位小数
  16. 刀与剑-COM返回数组
  17. Camera ISO、快门、光圈、曝光这几个概念
  18. Application context和Activity context的区别
  19. 图书借阅java设计报告_JAVA课程设计报告图书借阅系统.pdf
  20. 计算多项式的值(秦九昭算法,clock()函数的使用)

热门文章

  1. 鸿蒙os开发哪里学,鸿蒙OS发布以后,我们去哪里学习?
  2. pytorch+cuda113+cudnn下载
  3. 基于STM32F103 0.96寸OLED液晶屏驱动(iic通讯)
  4. 中国石油大学《大学英语(三)统考》第九套模拟题
  5. Postgresql的使用-2 删除数据库
  6. 树莓派安装privoxy
  7. 消费品巨头齐聚第三届进博会,首发众多新品、看好中国未来 | 知消专稿
  8. c语言结构体学习整理(结构体初始化,结构体指针)
  9. 解决Foxmail新增邮箱报错问题
  10. CycleGAN和Conditional GAN(cGAN)