Keyboard.GetState()と.IsKeysDown()に問題があります。それらは単に機能しません。
1513 次
2 に答える
1
Synergyを使用している場合は、問題の1つである可能性があります。
キーボード入力キャッシュなどがクリアされると思います。そのため、ハードウェアを再度ポーリングしても、Windowsには識別できるキーストロークがありません。
したがって、XNAでデバッグするときは、Synergyを無効にします。
于 2012-07-31T20:10:31.173 に答える
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;
于 2012-08-01T15:26:00.357 に答える