XNA和Keyboard.GetState()或任何其他键盘问题有问题吗?

时间:2012-07-31 20:10:31

标签: c# xna

我在使用Keyboard.GetState()和.IsKeysDown()时遇到问题。他们根本行不通。

2 个答案:

答案 0 :(得分:1)

如果你有Synergy,那么它可能是其中一个问题。

我相信它会清除键盘输入缓存或其他内容,因此当您再次轮询硬件时,Windows无法识别任何击键。

因此,在XNA中进行调试时,请禁用Synergy。

答案 1 :(得分:0)

听起来您可能遇到了一些问题。由于其他新开发人员在寻求键盘输入帮助时可能会发现这个问题,我将尝试涵盖这两个问题。

1)Keyboard.GetState()返回当前正在按下哪些键的快照。 KeyboardState.IsKeyDown()不识别击键。它只是告诉你当前正在按下哪些键。由于其工作方式,最好在尝试使用之前存储键盘状态。

2)在Update循环中,您需要存储当前的键盘状态:

KeyboardState newKeyboardState = Keyboard.GetState();

现在您可以检查是否发生了按键操作。按键意味着按键已经关闭,现在已经启动:

if(previousKeyboardState.IsKeyDown(Keys.A && !newKeyboardState.IsKeyDown(Keys.A)) {
    Console.Out.WriteLine("Keystroke: A");
}

最后,保存当前状态,以便稍后检查:

previousKeyboardState = newKeyboardState;
相关问题