当按键重复时禁用按键事件

12

是否有方法可以在按键重复时禁用按键事件?

我正在开发一款游戏,当我按下一个键时,玩家会进入奔跑模式,当释放该键时,玩家会回到站立模式。问题在于,当有连续触发 keyPressEvent() 事件时,会自动触发 keyReleaseEvent() 事件,导致玩家在进入奔跑模式后立即回到站立模式,从而重置我用于奔跑动画的步骤。

我应该怎么做才能取消这个问题?


由于您正在开发游戏,您可能已经有了一个游戏循环。每次迭代检查按键是否被按下是否可行?我不确定autorelease/press是否是操作系统功能(我猜测)。只需在类似集合的容器中记录按键按下和释放的情况(按下->添加,释放->删除),并在每个循环迭代中检查按键是否在容器中即可。 - OnWhenReady
1个回答

22

由于你在问题中标记了Qt,我假设你正在使用Qt键盘事件 - 在这种情况下,使用QKeyEvent::isAutoRepeat()来检查按键事件是否是实际的按键事件或自动重复事件。


谢谢!它解决了我的问题。我想要一个键盘事件的“保持”功能,但在保持状态下,按下和释放事件总是被触发,这是不可能的。 - Morgane
我可以隐藏所有的自动重复按键,但是我怎么知道哪个自动重复按键释放是最后一个? - sntrcode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接