2012-07-31 40 views

回答

1

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

我相信它会清除键盘输入缓存或其他事情,所以当您再次轮询硬件时,Windows没有任何键盘敲击来识别。

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

1

这听起来像你可能遇到一些问题。由于其他新开发人员在寻找键盘输入帮助时可能会发现此问题,因此我会尽力涵盖两者。

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

2)在你的更新循环,你会想要保存当前的键盘状态:

KeyboardState newKeyboardState = Keyboard.GetState(); 

现在可以检查是否发生了按键。按了一个键意味着,一个关键的使用将下降,现在到了:

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

最后,保存当前状态,以便以后可以对证:

previousKeyboardState = newKeyboardState;