我目前正在使用 GetAsyncKeyState()
来检测 Keydown 事件,但是当您按住该键时,这些事件将重复出现。
阻止事件重复发生的简单方法是什么?
示例
如果我按住键盘上的 i
键一会儿,我会得到这样的输出:
iiiiiiiiiiiiiiiiiiiiiiiii
取而代之的是:
i
我想强制用户再次按下该键以触发该事件。
最佳答案
避免使用 WM_KEYDOWN 或 WM_CHAR 等键盘相关消息来检测键,当用户按住它时,Windows 会重复 WM_KEYDOWN。您只需要一个自己的 bool 标志来跟踪 key 的状态。只有当您看到 GetAsyncKeyState() 报告的状态与此标志之间存在差异时,才更改您的游戏对象状态。大致:
bool movingLeft = false;
...
if ((GetAsyncKeyState(VK_LEFT) < 0) != movingLeft) {
movingLeft = !movingLeft;
gameObject->setVelocity(movingLeft ? -10 : 0);
}
关于c++ - C++中的按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523111/