⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 04.txt

📁 VB文章集(含API、窗口、数据库、多媒体、系统、文件、等等)
💻 TXT
字号:
FLIC动画文件的播放程序设计


 
Autodesk公司的三维动画设计软件3DS在我国已广泛使用,其良好的性能为计算机专家和艺术家所肯定。其动画存储文件FLIC也给系统提供了存储和显示的方便。下面具体分析FLIC文件的格式及播放程序的设计。 
一、FLIC文件格式的概述 
FLIC文件事实上是对一个静止画面序列的描述,连续显示这一序列便可在上产生动画效果。FLIC文件结构简洁,弹出速度快,虽然每种基色最多只有256级灰度,图像深度只有8位,使用起来很方便。 
FLIC文件有两种类型:FLI文件和FLC文件。FLC文是FLI文件的进一步发展,它采用更高效的压缩技术,且其分辨率也不仅限于320×200。我们在PC上经常使用的FLI文件,因为它和VGA的320×200×256显示相匹配。 
FLIC文件采取的压缩技术原理就是仅保存前一帧中改变的部分。这样占的空间小,弹出速度快。FLIC文件的结果可分为3个层次:文件层、帧层和块层。文件层给出了FLIC文件的基本特征。帧层定义了帧的缓冲和块中块的数目。块层包括块的大小、类型和实际数据。这样层次结构很容易实现,特别是可以增加块的类型以满足新的需要,同时无需涉及原定义。 
二、各层头的结构 
1.FLI文件格式的结构定义 
①文件头的结构定义 
文件头长度为80H字节,其C语言结构定义如下 
/* fli file hedaer struct */ 
typedef struct { 
unsigned long fli-size;/* 00H:文件总长度 */ 
unsigned int magic; /* 04H:文件格式,FLC=AF12; 
FLI=AF11; */ 
unsigned int frames-number; /* 06H:FLIC的帧数 */ 
unsigned int screen-width; /* 08H:屏幕宽度 */ 
unsigned int screen-height; /* 0AH:屏幕高度 */ 
unsigned int unuserd; /* 0CH:保留未用 */ 
unsigned int flags; /* 0EH:标志=0003 */ 
unsigned int speed; /* 10H:帧间播放速度单位 */ 
unsigned long next; /* 12H:置为0 */ 
unsigned long frit; /* 16H:置为0 */ 
unsigned char fli-expand[102]; /* 1AH:保留作扩展用=0 */ 
} FLIHEAD; 
②帧头的结构定义 
帧头长度为10H字节,其C语言结构定义如下: 
/* frames header struct */ 
typedef struct { 
unsigned long size-frame; /* 00H:帧大小,包括本帧头 */ 
unsigned int magic; /* 04H:帧标识字=0F1FAH */ 
unsigned int chunks; /* 06H:本帧块数 */ 
unsigned char expand[8]; /* 08H:保留未用=0 */ 
} FRAMESHEAD; 
③块头的结构定义 
块头长度为6H字节,其C语言结构定义如下: 
/* chunk header struct */ 
typedef struct { 
unsigned long size-chunk; /* 00H:块大小 */ 
unsigned type-chunk; /* 04H:块类型 */ 
} CHUNKHEAD; 
2.FLC文件格式的结构定义 
文件头长度为80H字节,其C语言结构定义如下: 
/* fli file header struct */ 
typedef struct { 
unsigned long fli-size; /* 00H:文件总长度 */ 
unsigned int magic; /* 04H:文件格式,FLC=AF12; 
FLI=AF11; */ 
unsigned int frames-number; /* 06H:FLIC的帧数 */ 
unsigned int screen-width; /* 08H:屏幕宽度 */ 
unsigned int screen-height; /* 0AH:屏幕高度 */ 
unsigned int depth; /* 0CH:图像深度 */ 
unsigned int flags; /* 0EH:标志=0003 */ 
unsigned int speed; /* 10H:帧间播放速度单位 
FLC=1ms, FLI=1/70s */ 
unsigned int reserved-1; /* 14H:保留未用 */ 
unsigned long createtime; 
unsigned long creator; 
unsigned long updatetime; 
unsigned long updater; 
unsigned int aspectx; /* 创建文件时的显示屏幕像素 
大小的纵横比,VGA320×200 
unsigned int aspecty; 为6∶5 */ 
unsigned char reserved-2[0x26]; /* 保留未用,=0 */ 
unsigned long offsetframel; /* 50H:第一帧画面相对于文件 
开始的偏移 */ 
unsigned long offsetframe2; /* 54H:第二帧画面相对于文件 
开始的偏移 */ 
unsigned char reserved-3[0x28]; /* 保留未用=0 */ 
} FLIHEAD; 
FLC的帧头和块头的结构定义和FLI文件格式的定义相同。 
每块的数据紧接在FLIC文件头的后面。对于不同的块类型有不同的数据含义,下面就不同的块类型分别介绍,这是设计播放FLIC动画文件程序的关键之所在。 
三、块类型的含义 

FLIC格式文件中的块类型有许多种,每一种类型都有不同的定义,因此我们必须对每一种类型作出准确的分析。由于动画格式FLIC图像文件的块类型具有极强的可扩展性,在此我们只介绍几种常见的块类型。 
1.类型04H 
为每基色256级灰度

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -