游戏中播放动画的方法有两种:一种是直接播放影片文件(如AVI和MPEG)文件,常用在游戏的片头与片尾;另一种则是游戏进行时利用连续贴图的方式,制作动画的效果。事实上游戏程序本省几乎都是以无限循环的方式不断地在游戏窗口进行窗口画面重绘的操作,即使画面没有任何变化,这个重绘的操作还是会不断地进行,一直到玩家选择结束游戏为止。
“基础动画显示”这一系列的随笔将介绍如何利用Windows本省的定时器及游戏中常用的游戏循环来制作游戏的动态小狗,并介绍最为常见的透明动画的制作方法。
定时器(Timer)对象可以每隔一段时间发出一个时间消息,程序一旦接收到此消息之后,便可以决定接下来要做哪些事情。这样的一个特性刚好可以适合播放静态的连续图片,产生动画的效果。下面来介绍如何建立与使用定时器。
1、建立定时器 Windows API的SetTimer()函数可为窗口建立一个定时器,并且每隔一段时间就发出WM_TIMER消息,此函数的使用语法如下:
UINT SetTime( HWND 接收定时器消息的窗口,
UINT 定时器代号,
UINT 时间间隔,
TIMERPROC 处理响应函数,);
SetTimer()函数的第2个参数是定时器的代号,这个代号在同一个窗口中必须是唯一的,且值不为0;第3个参数则是定时器发出WM_TIMER消息的时间间隔,以千分之一秒为单位,也就是若此参数设为1000,则每间隔1秒发出一个WM_TIMER消息;第4个参数则用于设定由系统调用处理WM_TIMER消息的响应函数,如果不用响应函数处理WM_TIMER消息,则此参数应设为NULL。
下面是设定一个每隔0.5秒发出WM_TIMER消息的定时器的程序代码。
SetTimer(1,500.NULL);
如果不使用相应函数来处理定时器的消息,那么就必须在消息处理函数中定义处理消息的程序代码。(?)2、删除定时器 定时器建立后,就会一直自动地按照设定的时间间隔发出WM_TIMER消息,如果要停用某个定时器,必须使用下面的这个函数。
BOOL KillTimer(int 定时器代号);
在大致了解了定时器的使用方法后,接下来将运用定时器使预先准备的几张人物连续摆动的位图,产生动画的效果,如下图所示:
范例ch3_1:使用定时器,将连续的任务图案显示在窗口上,产生动画效果。
下载地址:
ch3_1(上传到windows live空间,可能需要MSN账号登陆)
说明:程序源代码中有相关的注释。
程序运行结果如下图:
PS:如想获得更多关于Visual C++游戏开发的内容,可点击随笔
:《Visual C++游戏编程基础》学习笔记——索引随笔。