C中的按键事件

我目前正在使用GetAsyncKeyState()来检测Keydown事件,但是在按住键时将重复这些事件.

阻止事件重复的简单方法是什么?

如果按住键盘上的键一段时间,我将得到如下输出:

iiiiiiiiiiiiiiiiiiiiiiiii

代替这个:

i

我想强迫用户再次按下键来触发事件.

解决方法:

避免使用与WM_KEYDOWN或WM_CHAR之类的键盘相关的消息来检测键,Windows在用户按住WM_KEYDOWN时会重复它.您只需要一个自己的bool标志即可跟踪密钥状态.仅当您看到由GetAsyncKeyState()报告的状态与该标志之间的差异时,才更改游戏对象的状态.大致:

bool movingLeft = false;
...
if ((GetAsyncKeyState(VK_LEFT) < 0) != movingLeft) {
    movingLeft = !movingLeft;
    gameObject->setVelocity(movingLeft ? -10 : 0);
}
上一篇:常用的键盘事件


下一篇:python-如何捕获Key_tab事件