移动鼠标会导致事件无法更新

时间:2015-04-09 00:06:32

标签: c++ sfml keystroke

过去两周左右,我一直在一个有趣的项目,一个游戏上工作。截至目前,我已经达到了发布稳定的程度,并且没有任何错误。除了一个。这非常令人讨厌 - 特别是因为我不知道发生了什么。

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

错误是如果玩家正在移动(按下按键),并且用户移动鼠标,并且当鼠标移动时释放按键(不再按下按键),玩家将继续移动,直到明确阻止他这样做。

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

有谁知道这个问题的任何好方法?
(与此有些相关 - 如果用户拥有游戏窗口,游戏会冻结,我真的很喜欢这种情况并没有发生)。

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

1 个答案:

答案 0 :(得分:1)

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

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