5

我正在用精灵做一个小游戏,角色根据按下的键(箭头)移动。我注意到该.KeyDown()方法一直被调用,直到释放任何键。

例如,当用户按下向上箭头时,方法.KeyDown()不断被调用。如果按下向下箭头,仍然按下向上箭头,则KeyEventArgs现在接收来自向下箭头的输入。最后,当释放向上箭头时,即使仍然按下向下箭头,.KeyDown()事件也会停止调用。

如何“重置”输入并告诉编译器继续调用.KeyDown()

4

2 回答 2

3

一个很好的问题-我不相信有任何方法可以覆盖此默认行为,但是通过自己跟踪按键肯定可以避免这种影响-即,当.KeyDown()被调用时,将键添加到某种类型跟踪它的结构,然后,当.KeyUp()被调用时,从该结构中删除密钥。

然后,只需反复检查当前按下的键的结构,并以此为基础移动而不是.KeyDown()告诉你什么。

于 2012-11-29T00:26:22.027 回答
0

您可以尝试使用KeyUp以检测密钥何时释放。然后您可以假设该键仍然被按下,直到KeyUp被调用。

于 2012-11-29T00:26:15.647 回答