我在使用Keyboard.GetState()和.IsKeysDown()时遇到问题。他们根本行不通。
答案 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;