游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: vitamin

求教关于 连续按键的 解决办法

[复制链接]

28

主题

433

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2008-4-10 22:11:00 | 显示全部楼层

Re:求教关于 连续按键的 解决办法

static bool bSK=true;
if(getKeyState('W')&0x8000)
{
   if(bSK==true)
   {
   i+=10;
   }
   
   bSK=false;
}
else
{
   bSK=true;
}

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2008-4-13 18:36:00 | 显示全部楼层

Re:求教关于 连续按键的 解决办法

今天看了下SDK
发现里面本来就有这样的例子
去看看DirectInput Keyboard  ( December 2002) 这个例子吧
里面有两种读取键盘数据的方法
一个是ImmediateData一种是Buffer
而使用Buffer读取数据可以检测到键盘哪个按键KEYDOWN和KEYUP的消息

11

主题

336

帖子

349

积分

中级会员

Rank: 3Rank: 3

积分
349
发表于 2008-4-20 22:48:00 | 显示全部楼层

Re: 求教关于 连续按键的 解决办法

要么加布尔 要么加枚举

13

主题

46

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2008-4-22 13:10:00 | 显示全部楼层

Re: 求教关于 连续按键的 解决办法

int lastKeyWDownTime
lastKeyState;//key state 结构体
循环体{
  int keyW =(getKeyState('W')&0x8000);
  int diffW = lastKeyState('W')&0x8000 - keyW;
  if(diffW<0){
     //w按下
     lastKeyWDownTime = getTime();
  }else if(diffW>0){
    //w松开
    if(MIN_CLICK_TIME<(lastKeyWDownTime-getTime())
     &&(lastKeyWDownTime-getTime())<MAX_CLICK_TIME){
       //判定为一次单击
    }
    lastkeyDownTime = 0;
   
  }else{
    //w没变化
   if(keyW){
    //w按下不放
     if((lastKeyWDownTime-getTime())>=MAX_CLICK_TIME){
        //非单激动作
     }
     
    }
  }
  lastkeystate = getkeystate();//储存这次输入


}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 17:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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