第3章 基础动画.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 基础动画

Windows 程序设计(面向游戏) 第 3 章 基础动画 3.1 动画显示 游戏中播放动画的方法有两种:一种是直接播放影片文件(如 AVI 和 MPEG)文件, 常用在游戏的片头与片尾;另一种则是游戏进行时利用连续贴图的方式,制作动画的效果。 事实上游戏程序本身几乎都是以无限循环的方式不断地在游戏窗口中进行窗口画面重绘的 操作,即使画面没有任何变化,这个重绘的操作还是会不断地进行,一直到玩家选择结束游 戏为止。 这一节将介绍如何利用 Windows 本身的定时器及游戏中常用的游戏循环来制作游戏的 动态效果,并介绍最为常见的透明动画的制作方法。 3.1.1 定时器的使用 定时器(Timer)对象可以每隔一段时间发出一个时间消息,程序一旦接收到此消息之 后,便可以决定接下来要做哪些事情。这样的一个特性刚好可以适合播放静态的连续图片, 产生动画的效果。下面来介绍如何建立与使用定时器。 1.建立定时器 WindowsAPI 的 SetTimer()函数可为窗口建立一个定时器,并且每隔一段时间就发 出 WM_TIMER 消息,此函数的使用语法如下。 UINT SetTimer( 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(hWnd,1,500,NULL); 如果不使用响应函数来处理定时器的消息,那么就必须在消息处理函数中定义处理消 息的程序代码。 2.删除定时器 定时器建立后,就会一直自动地按照设定的时间间隔发出 WM_TIMER 消息,如果要停 用某个定时器,必须使用下面的这个函数。 BOOL KillTimer( int 定时器代号 ); 在大致了解了定时器的使用方法后,接下来将运用定时器使预先准备的几张人物连续 摆动的位图,产生动画的效果,如图 3-1 所示。 58 Windows 程序设计(面向游戏) 图 3-1 范例 ch3_1 使用定时器,将连续的人物图案显示在窗口上,产生动画效果。 程序代码:全局变量声明 1 //全局变量声明 2 HINSTANCE hInst; 3 HBITMAP girl[7]; 4 HDC mdc,hdc; 5 int num; 程序说明 (1)第 3 行:声明位图数组用来存储各张人物位图。 (2)第 4 行:声明“hdc”为全局变量,用来存储窗口 DC,这样后面的程序进行动画 绘图会较为方便。 (3)第 5 行:“num”变量用来记录目前显示的图号。 程序代码:InitInstance() 6 //****初始化函数 ************************************************ 7 // 1.加载位图 8 // 2.建立定时器 9 BOOL InitInstance(HINSTANCE hInstance, int nCmdSho

文档评论(0)

561190791 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档