【问题标题】:Moving the mouse causes events to not update移动鼠标会导致事件不更新
【发布时间】:2015-04-09 00:06:31
【问题描述】:

在过去两周左右的时间里,我一直在为一个有趣的项目工作,一个游戏。截至目前,我刚刚达到版本稳定且没有任何错误的地步。除了一个。这很烦人——尤其是因为我不知道发生了什么。

本质上,我使用 SFML 的 isKeyPressed 函数来检查是否按下了某个键,并使用 Event::KeyPressed 事件来检查是否释放了键。

这个bug是如果玩家在移动(按键被按住),并且用户移动了鼠标,而在鼠标移动的时候释放了按键(按键不再被按下),播放器会继续移动,直到有东西明确阻止他这样做。

这一系列事件是可重现的,所以它不应该是我的代码,而是 SFML 处理事件的方式。

有没有人知道解决这个问题的好方法?
(与此有点相关 - 如果用户“持有”游戏窗口,游戏会冻结,我真的希望这不会发生)。

如果需要任何代码或更多详细信息(屏幕截图等),我很乐意提供。谢谢!

【问题讨论】:

  • 请更新您的问题以包含重现问题的简单代码示例。

标签: c++ sfml keystroke


【解决方案1】:

如果你想检查密钥释放,你应该使用 Event::KeyReleased 事件而不是 Event::KeyPressed,你不觉得吗?

但是当您使用 isKeyPressed 时,您不需要检查按键是否释放:只需在按下按键的每一帧上移动播放器即可。

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2015-07-06
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2021-08-12
    相关资源
    最近更新 更多