【问题标题】:Disable key pressing events when they repeat重复时禁用按键事件
【发布时间】:2014-05-31 15:12:59
【问题描述】:

有什么方法可以在重复按键事件时禁用它们?

我正在开发一款游戏,当我按下一个键时,玩家会进入跑步模式并在释放键时返回站立模式。问题是重复keyPressEvent()事件,自动有keyReleaseEvent()事件,让玩家在进入跑步模式后立即回到站立模式,从而重置步(我用于跑步动画)。

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

【问题讨论】:

  • 由于您正在开发游戏,因此您可能有一个游戏循环。如果按键被按下,检查每次迭代是否有效?我不确定 autorelease/press 是否是操作系统功能(我猜)。只需将您的按键按下和释放记录在一个类似集合的容器中(按 -> 添加它,释放 -> 删除它)并检查每个循环迭代是否键在容器中。

标签: c++ qt keyboard-events 2d-games


【解决方案1】:

由于您使用 Qt 标记了您的问题,我假设您正在使用 Qt 按键事件 - 在这种情况下,请使用 QKeyEvent::isAutoRepeat() 检查按键事件是“真实”按键事件还是自动重复事件。

【讨论】:

  • 谢谢!它解决了我的问题。我想为我的键盘事件提供一个“保持”功能,但这是不可能的,因为在保持状态下,按下和释放的事件总是被触发。
  • 我可以隐藏所有自动重复按键但我如何知道最后一次自动重复按键释放?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多