播放动画的两种方法

原创 2007年09月19日 12:34:00

        在大部分设计的游戏中播放动画的方法有两种:一种是直接播放影片文件(如AVI和MPEG)文件,常用在游戏的片头与片尾;另一种则是游戏时利用连续贴图的方式,制作动画的效果。事实上游戏程序本身几乎都不得是以无限循环的方式不断地在游戏窗口中进行画面重绘的操作,即使用画面没有任何变化,这个重绘的操作还是不断进行的,一直到玩家选择结束游戏为止。

        进行连续的播放图片,一种是得用定时器,另一个是重写消息循环,又称为游戏循环。

1:定时器:UINT SetTimer(HWND   接收定时器消息的窗口 ,UINT    定时器代号(必唯一),

                                             UINT   时间间隔,      TIMERPROC    处理响应函数); 如:SetTimer(1,500,NULL);

删除定时器用KillTimer(int 定时器代号);

2:游戏循环:

while(msg.message!=WM_QUIT)

{

         if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))     //检测消息

          {

                        TranslateMessage(&msg);   DispatchMessage(&msg);

           }

         else

            {

                      tNow=GetTickCount();    //取得系统开始到目前经过的时间

                      if(tNow-tPre>=40)   MyPaint(hdc);//tPre为记录前次绘图时间。MyPaint(hdc)为重绘函数

           }

}

Note:

(1);使用PeekMessage()函数来检测目前是否有要处理的消息,若检测到消息(包含WM—QUIT消息)则会返回一个非零值,否则返回零;

(2):不能用GetMessage代替PeekMessage,因为GetMessage只有在取得WM—QUIT消息的时候才返回零,其他的时候则返回非零或"-1"(发生错误时);

(3):if(tNow-tPre>=40)   MyPaint(hdc);这里设定40个单位的原因是,因为每隔40个单位进行一次绘图操作那么1秒钟大约重绘窗口1000/40=25次,刚好可以达到期望值.要使玩家感觉不到延迟的状况,基本上游戏画面必须在一秒钟之内至少更新25次以上.由于循环的运行速度远比定时器发出时间信号来得快,因此使用游戏循环可以更精确的控制程序运行速度并提高每秒钟画面重画的次数.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

unity 2D游戏开发 制作帧动画的两种方法

本小主在这里给大家分享一下unity 2D游戏开发中制作帧动画的两种方法。 比较简单,一学即会。 方法一: 是用代码控制: 先创建一个2D工程。导入图片资源,并设置textur...

《iOS6 application development》学习之路:No.6:两种实现动画的方法

在看iOS6应用开发时,介绍了一种播放动画的效果,其实就是一组数组,里面yi

android两种动画 Tween Animation和Frame Animation使用方法总结 (转载 写的很好)

Android SDK介绍了2种Animation: Tween Animation(渐变动画):通过对特定的对象做图像变换如平移、缩放、旋转、淡出/淡入等产生动画效果 Frame Ani...

Cocos2d-x学习笔记(五) 精灵播放动画的两种方式

 这几天在看控件类,暂时没有想好实际运用的方向,单纯的创建网上已经有很多这方面的例子,我就不写了。接下来是学习精灵类,精灵类若是单独学习也是很简单,于是我加了一些有关动画方面的知识点与精灵类...

Android中播放声音的两种方法

在Android中,音频、视频等多媒体元素的加入,使得应用程序的用户体验更好。可以说,现在的手机,已经远远不只作为通信工具,更成为娱乐、办公的必备产品。 Android提供了简单的音...

Qt播放WAV格式音频文件的两种方法

这两种方法都需要在.pro文件中加入multimedia模块。 方法一、使用QAudioOutput [cpp] view plain copy print? #include   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)