ANI(APPlicedon Startins Hour Glass)文件是
MS-Windows的动画光标文件,其文件扩展名为“.ani”。它一般由四部分构成:文字说明区、信息区、时间控制区和数据区,即
ACONLIST块。anih块、rate块和 LIST块。
1.从(0000-006D)是 Wnd0WS 95& NT
ANI文件的文字说明区部分
如你想对你开发的ANI文件提供一点文字说明,并加入你的版权信息,且同时它们又要被ANI文件播放软件承认时,这是你唯一的选择。要是你觉得这样做很麻烦,或者没什么好写时,那你完全可以去掉本块中的全部内容,并将块的大小置为0。切记,“块识别码
‘
ACONLIST’”和标识“块的大小”这两部分,共计
12字节,绝对不能被更改、移动及删除,否则后果自负。
可能为了让文字说明信息系统化,在ACONLIST块内部包容了若干子块,本例中用到的两个分别是:INFOINAM块(提供本文件的解释说明)和IART块(用于插入版本信息)。说实在,诸位可以运用在
AVI文件中插入自定义块的方法,加入自己的自定义块,其结果只是ANI播放软件把它当作一个“JUNK”罢了。
0000-0003:多媒体文件识别码:RIFF
0004-0007;文件大小(
2052h字节)-8字节
0008- 000F:
ACONLIST块识别码,它是文字说明区开始的标志
0010-0013:ACONLIST块的大小(5Ah字节)
0014-001B:INFOINAM块识别码,标志文件说明信息子块的开始
001C-
001F: INFOINAM块的大小( 20h字节)
0020-003F :文件说明信息子块的内容“Application startingHour
Glass”
0040-0043:IART块识别码,标志版权说明信息于决的开始
0044-0047:IART块的大小(26h字节)
0048-
006D:版权说明信息于块的内容“Microsoft Corporation,Copyright 1995”
2.从(006E-0099)是
WindoWs 95& NT
ANI文件的信息区部分
前面我们已见识过AVI文件的信息区部分,诸位是否觉得已够复杂了。说实在,那是我花了许久才找到的,只有两条数据流(一条图像,一条声音),且文件已足够的小了(就1MB左右)。不过ANI文件的信息区就不会有它那么”恐怖”了。到目前为止,我只发现了由“anih”作识别码,且信息区长度恒定为24h,36字节的唯一一种信息区,且结构与AVI文件的信息区有几分相似。
006E-0071:
anih识别码,它是信息区开始的标志
0072-0075:anih块的大小(24字节)
0076-0079:可能是标志,不知怎么修改它,还是不改为好
007A-007D:本文件中包含的光标帧数。ANI文件在播放时所形成的动画效果,其实就是一张张的光标或图标图像按一定的顺序,绘制到屏幕上,并保留指定的时间(见“时间控制区”说明),这和AVI文件的帧播放原理是一样的。本文件共有10帧用像
007B-0081:定义从第一帧光标图像开始,播放到第几帧光标图像后重新开始。在一般情况下,AVI文件都要求播放软件播完全部图像后再重新开始(除非有一些其它的小企图,只需要播放开始的一部分帧图像)。就象本例定义为AH,即在播完全部的10帧图像后,再重新从第一帧图像开始播放0082-0091:未知,简单更改后对文件播放无影响
0092-0095:未知,可能是此文件在播放前需预读其中的多少帧图像作初始化
0096-0099:未知,可能是此文件中包含的数据流个数
3.从(009A-00C9)是
Windows 95& NT
ANI文件的时间控制区部分
前面我们曾提到关于ANI文件播放,它是将每帧的光标或图标图像接一定的顺序,绘制到屏幕上,并保留指定的时间,从而达到动画效果。而它对每帧图像这一保留时间的控制。其实是一个烦琐的过程。它需要分别对每帧图像定一个时间,以一个长整数的形式表示,,并按光标或图标图像播放的顺序存放在本区域内。
009A-
009D;rate识别码,它是时间控制区开始的标志
009E-00A1:rate块的大小(28h字节)
00A2-
00A5:它对应第一帧图像显示后在屏幕上保留的时间
00A6-00A9:它对应第二帧图像显示后在屏幕上保留的时间
00C6-00C9:它对应第十帧图像显示后在屏幕上保留的时间
4.从(
00CA-2051)是 Wind0WS 95& NT Asq文件的数据区部分
ANI文件的数据区,以“块”形式存放着全部图像的数据,即它包含了一个
framicon子块和多个icon子块,它的形式很象AVI文件的数据块。framicon子块用于定义本文件的主要帧,也就是我们在 windows 95
&NT的文件管理器中见到的那张图像,到目前为止,我
见到的framicon子块都被作为动画光标的第一帧,而放在数据区的第一个子块的位置上;icon子块则用于定义本文件的其它图像帧。
00CA-00CD:LIST识别码,它是数据区开始的标志
00CE-00DI:LIST块的大小(1F80h字节)
00D2-00D99:framicon识别码,数据区中第一个子块的开始
00DA-00DD:framicon子块的大小(43Eh字节)
00DE-051B:
framicon子块的内容,不难看出,这里包含了一个光标文件的完整内容(见光标文件的说明)。但它似乎与我们作为例子的文件内容不一样,其实它指一个包含多个光标图像的光标文件.
051C-051F:icon识别码,数据区中第二个子块的开始
0520-0523:icon子块的大小(2FEh字节)
0524-
0821: icon子块的内容
. .
. .
. .
1D4C-1D4F:icon识别码,数据区中第十个子块的开始
1D50-1D53:icon子块的大小(2FEh字节)
1D54-2051:icon子块的内容