2012-07-31 66 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;