游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2884|回复: 9

救命啊!2D游戏中消息循环问题

[复制链接]

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-8-1 22:54:00 | 显示全部楼层 |阅读模式
while( TRUE )
    {
        if (PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE))
        {
            if (!GetMessage( &msg, NULL, 0, 0))
                break;

            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else if( m_bActive )
        {
        UpdateFrame();    //游戏控制部分
        }
        else
            WaitMessage();
    }

   好比这是一个坦克游戏,游戏的时候,按理来讲不管按哪个键,都会发出WM_KEYDOWN 的消息,从而被PeekMessage截获,使得UpdateFrame()无法执行

……难道是按下的键值同时被CDirectInput给保存了下来,等下次循环再由UpdateFrame()执行啊?




0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-8-1 23:54:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

我想WM_KEYDOWN消息的发送是有一定间隔的,而且处理WM_KEYDOWN消息一般不需要很多时间,在一帧的时间内可以同时完成多个消息的处理并执行一次UpdateFrame();   

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20737
发表于 2006-8-1 23:59:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

会不会是你的WM_KEYDOWN处理太过于复杂,甚至影响到消息相应部分的正常流程。

4

主题

36

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2006-8-2 10:11:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

最好用dinput

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2006-8-2 10:50:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

谢谢各位的意见 我会好好参考的

0

主题

202

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2006-8-3 01:15:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

。。。。。。。。。

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2006-8-5 10:22:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

用dinput好一些吧

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2006-8-7 20:16:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

正常WM_KEYDOWN足够了

30

主题

357

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2006-8-7 23:16:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

这不是用不用DInput的问题吧,用了好象也会有消息吧。

0

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2006-9-4 15:56:00 | 显示全部楼层

Re:救命啊!2D游戏中消息循环问题

请把" if (PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE))"中的&quotM_NOREMOVE"
改为"PM_REMOVE"
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 07:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表