Ich mache ein kleines Spiel mit Sprites, wo sich der Charakter bewegt, abhängig von der gedrückten Taste (Pfeile). Ich habe bemerkt, dass die .KeyDown()
Methode aufgerufen wird, bis jeder Schlüssel freigegeben ist.Einfaches aber kniffliges Problem mit KeyDown() in C#
z.B. Wenn der Benutzer den Pfeil nach oben drückt, wird weiterhin die Methode .KeyDown()
aufgerufen. Wenn der Abwärtspfeil gedrückt wird und der Pfeil nach oben gedrückt wird, empfängt der KeyEventArgs
jetzt die Eingabe von dem Abwärtspfeil. Schließlich, wenn der Pfeil nach oben losgelassen wird, hört das .KeyDown()
Ereignis auf, genannt zu werden, obwohl der Abwärtspfeil noch gedrückt wird.
Wie kann ich die Eingabe "zurücksetzen" und den Compiler anweisen, weiterhin .KeyDown()
aufzurufen?
Haben Sie versucht zu protokollieren, welcher Schlüssel für das KeyDown verantwortlich ist, damit Sie überprüfen können, wann Sie eine Schlüsselfreigabe erhalten? Auf diese Weise können Sie so weitermachen, als ob der Schlüssel immer noch gedrückt ist, bis der Schlüssel, an dem Sie interessiert sind, derjenige ist, der die Freigabe ausgelöst hat. – RonaldBarzell
Wenn sich Ihre Spiellogik in einer Echtzeit-Ereignisschleife befindet, können Sie sie einfach aufrufen: 'Form_KeyDown (null, e)' –