设为首页 加入收藏

TOP

基础动画显示游戏循环的使用(一)
2012-11-02 08:52:36 】 浏览:14404
Tags:基础 动画 显示 游戏 循环 使用

    这里我们提出一种游戏循环的概念,游戏循环是将原先程序中的消息循环加以修改,方法是判断其中的内容目前是否有要处理的消息,如果有则进行处理,否则按照设定的时间间隔来重绘画面。下面是接下来一段游戏循环的程序代码:
   
    //游戏循环
   
    while( msg.message!=WM_QUIT )               //注释点1(详细内容见下)
   
    {
   
    if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) )       //注释点2(详细内容见下)
   
    {
   
    TranslateMessage( &msg );
   
    DispatchMessage( &msg );
   
    }
   
    else
   
    {
   
    tNow = GetTickCount();                        //注释点3
   
    if(tNow-tPre >= 100)                   //注释点4
   
    MyPaint(hdc);
   
    }
   
    }
   
    我们来讲解一下游戏循环片段中的几个重点。
   
    <1>注释点1:当收到的msg.message不是窗口结束消息WM_QUIT,则继续运行循环,其中msg是一个MSG的消息结构,其结构成员message则是一个消息类型的代号。
   
    <2>注释点2:使用PeekMessage()函数来检测目前是否有需要处理的消息,若检测到消息(包含WM_QUIT消息)则会返回一个非“0”值,否则返回“0”.因此在游戏循环中,若检测到消息便进行消息的处理,否则运行else叙述之后的程序代码。这里我们要注意的是,PeekMessage()函数不能用原先消息循环的条件GetMessage()取代,因为GetMessage()函数只有在取得WM_QUIT消息时才会返回“0”,其他时候则是返回非“0”值或“-1”(发生错误时)
   
    <3>注释点3:GetTickCount()函数会取得系统开始运行到目前所经过的时间,单位是毫秒(milliseconds)。  之前我理解错了,在这里感谢worldy的指出我的错误。
   
    DWORD GetTickCount()    //取得系统开始到目前经过的时间
   
    这里取得时间的目的主要是可以搭配接下来的判断式,用来调整游戏运行的速度,使得游戏不会因为运行计算机速度的不同而跑得太快或者太慢。


首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/42/42
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC++编程实现镜像劫持 下一篇DirectX 11各组件的介绍

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目