游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3661|回复: 4

MM又碰到难题了:)

[复制链接]

6

主题

139

帖子

139

积分

注册会员

Rank: 2

积分
139
发表于 2004-6-9 17:59:00 | 显示全部楼层 |阅读模式
MM:HOHO引擎里怎么只有 GetMouse()->IsLeftButtonDown() // 左键按下检测,有没有GetMouse()->IsLeftButtonUp()  // 左键弹起检测?
[em5]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-6-11 03:06:00 | 显示全部楼层

Re:MM又碰到难题了:)

这个。。。。。。自己记录一下上次的按键状态,然后再和这次刷新时取得的值对比一下,就可以判断按键是否释放了。
呵呵,越俎代庖了,sea_bug兄不要介意呀。

6

主题

139

帖子

139

积分

注册会员

Rank: 2

积分
139
 楼主| 发表于 2004-6-11 10:03:00 | 显示全部楼层

Re:MM又碰到难题了:)

强烈建议斑竹sea_bug把GetMouse()->IsLeftButtonUp()  // 左键弹起检测
做出来,方便我使用。
这个这个。。。怎么记录上次按键的状态啊???给我的代码例子看看。

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-6-11 11:47:00 | 显示全部楼层

Re:MM又碰到难题了:)

用一个变量保存上一次调用GetMouse()->IsLeftButtonDown()返回的值。然后再做比较

假设GetMouse()->IsLeftButtonDown()返回bool型:

#define KEY_NORMAL 0
#define KEY_DOWN 1
#define KEY_UP 2
#define KEY_HOLD 3

int keystat;
bool newkeystat;
bool oldkeystat;

newkeystat =GetMouse()->IsLeftButtonDown();
if (oldkeystat){//上次左键是按下的
   if (newkeystat){//这次左键是按下的
      keystat = KEY_HOLD;//按键HOLD动作
    }else{//这次左键不是按下的
      keystat = KEY_UP;//按键UP动作
    }
}else{//上次左键不是按下的
   if (newkeystat){//这次左键是按下的
      keystat = KEY_DOWN;//按键DOWN动作
    }else{//这次左键不是按下的
      keystat = KEY_NORMAL;//按键没有按下
    }

}
oldkeystat = newkeystat;

以上是一个通过对比两次的按键快照进行按键状态判断的代码片段。基本上这样就可以了。如果需要判断多个按键的动作,则将片段放入循环中,并将变量改为数组就可以了。

用查表来代替if判断会更好,但是完全没有必要这么做。

6

主题

139

帖子

139

积分

注册会员

Rank: 2

积分
139
 楼主| 发表于 2004-6-11 12:27:00 | 显示全部楼层

Re:MM又碰到难题了:)

GG果然是GG啊,我好崇拜你啊!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-13 17:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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