动画类的研究
动画类使用范围的讨论
顾名思义,类肯定提供给开发者使用。但是开发者使用这个类做什么呢?最简单的用途,开发游戏动画效果,还有就是编写工具来编辑动画文件,还有其他的用途么?好像没有了。
用途出来了,那么针对不同的用途,动画类要提供什么样的操作呢?于是,就需要我们刨开动画的本质构成。
动画的构成
这里的动画构成,主要是针对2D休闲类游戏。经过笔者的一些游戏制作精力及相关的需求整理如下。
动画由层构成,层间除了具有显示顺序关系外,其余属性相互独立。
层具有多种属性,下面分别罗列
l 私有数据,主要用于程序中,开发者动态标识层。默认为0。
l 层名称,层的另一个标识方法。默认为空。
l 层基本信息,包括
a) 基准点X Y坐标(整数)
b) 显示时间(正整数)
c) 图片绘制方式(正整数)
d) 停止结束标志(0/1)
e) 开始延迟(正整数)
l 层更新信息,包括
a) 桢更新(0/1)
b) 渐变更新(0/1)
c) 图片区域更新(0/1)
d) 运动路径更新(0/1)
e) 图片旋转角度更新(0/1)
f) 图片缩放比例更新(0/1)
l 层停止信息,包括
a) 桢更新结束停止(0/1)
b) 渐变更新结束停止(0/1)
c) 图片区域更新结束停止(0/1)
d) 运动路径更新结束停止(0/1)
e) 图片旋转角度更新结束停止(0/1)
f) 图片缩放比例更新结束停止(0/1)
l 渐变信息,包括
a) 最小透明度(0-250)
b) 最大透明度(10-255)
c) 渐变方向(1.渐显 2.渐隐 3.渐显渐隐 >7 不变的透明度值)
d) 渐变持续时间(>1正整数单位毫秒)
e) 保留值(0)
l 图片区域信息,包括
a) 区域宽度(>0)
b) 区域高度(>0)
c) 区域更新方向(正整数)
d) 区域更新持续时间(>1正整数单位毫秒)
e) 保留值(0)
l 运动路径信息,包括
a) 路径点数(>2)
b) 路径停留标志(0.显示时停留在点间的线上 1显示时停留在点上)
c) 路径方向(1.路径循环 2.路径往回)
d) 路径持续时间(>1正整数单位毫秒)
e) 运动路径<点x坐标,点y坐标,t该点停留时间>
l 图片旋转信息,包括
a) 最小角度(0-355)
b) 最大角度(5-360)
c) 旋转方向(1.小角度过渡到大角度 2.大角度过渡到小角度 3.小大小 >7 不变的角度值)
d) 旋转持续时间(>1正整数单位毫秒)
e) 旋转居中点X Y坐标
f) 保留值(0)
l 图片缩放信息,包括
a) 最小横向缩放尺寸(1-4000)
b) 最大横向缩放尺寸(1-4000)
c) 最竖横向缩放尺寸(1-4000)
d) 最大竖向缩放尺寸(1-4000)
e) 缩放方向(1.小尺寸过渡到大尺寸 2.大尺寸过渡到小尺寸 3.小大小 >7 不变的缩放尺寸值)
f) 缩放持续时间(>1正整数单位毫秒)
g) 缩放居中点X Y坐标
h) 保留值(0)
l 桢信息,层可以由一桢或多桢组成。
a) 图片显示位置X Y坐标(整数)
b) 图片显示时间(正整数)
c) 图片绘制方式(正整数)
d) 图片文件
e) 图片显示区域
f) 桢标示数据
层操作整理
综上所述,层操作分为,整层操作及层内操作,整层操作只要针对层,层内操作主要针对层的属性,层内操作又分为属性操作和桢操作。下面分别讨论
整层操作
整层操作比较简单,主要包括得到层数目,移动层,标示层三部分操作
l 得到层数目,是个比较常用的操作。
l 移动层,主要用于编辑动画的需求
l 标示层,层可以通过顺序索引号标示,也可以通过名称和私有数据标示,特别是移动后的层,具有唯一标识还是相当有用的。
l 添加和删除层。
层属性操作
层属性操作主要是改变层的属性,层属性的更改都是围绕着具体层进行的,而这个具体层都是通过顺序索引得到的。
操作分为下面几类:
l 层基本信息操作
l 层更新方式操作
l 层停止方式操作
l 渐变方式操作
l 图片区域方式操作
l 运动路径方式操作
l 图片旋转方式操作
l 图片缩放方式操作
桢属性操作
桢属性操作主要针对层内所使用的显示桢,可以通过桢索引或者桢标示得到相应的桢进行操作。
操作主要有
l 添加和删除桢。
l 得到桢数目。
l 移动桢。
l 设置桢属性。
动画的显示
前面所讲的都是动画的数据构成,动画应用中最多还是动画显示。目前这部分已经编写完成了,这里主要讲讲它的显示更新机制,以便大家对此有所了解。
动画显示由几部分构成,
显示状态
包括开始显示,停止显示,得到显示状态等状态相关信息。
动态更新
动态更新分为2部分,更新部分及显示部分,
更新部分负责计算并保留当前动画需要更新图片及显示区域的信息。
显示部分负责将更新部分计算的结果进行显示。
显示相关
一些显示相关的操作,比如判断给定点是否落在动画内等操作。