Ich bin mein eigenes Eingabesystem in monogame Programm zu machen, und jetzt habe ich ein Problem mit, wenn hier statments:C# - nur zuerst, wenn wird ausgeführt (XNA/Keypress)
public static void Input()
{
if (IsKeyPressed(Keys.Space))
{
Cursor.X += 25;
}
if (IsKeyPressed(Keys.Back))
{
Words.Last().RemoveLetter();
Cursor.X -= 25;
}
if (IsKeyPressed(Keys.A))
{
Words.Last().AddLetter(new Letter(Letters.A, Cursor));
Cursor.X += 25;
}
}
static bool IsKeyPressed(Keys key)
{
keyState = Keyboard.GetState();
if (keyState.IsKeyDown(key) && prevKeyState.IsKeyUp(key))
{
prevKeyState = keyState;
return true;
}
else
{
prevKeyState = keyState;
return false;
}
}
Okay, so in meinem Methode Input Ich überprüfe auf Tastendrücke, und das Ergebnis im Programm ist das, was auch immer ich in die erste IF-Anweisung einlege, dieser Schlüssel wird funktionieren. Wenn ich also 'A' ändere, wo der 'Space' jetzt ist, würde A funktionieren und Space würde nicht ' t ...
Warum sind andere Wenn immer falsch?
EDIT:
so eigentlich Okay, wenn meine isKeyPressed() -Methode wie folgt aussieht (ohne prevKeyState Variable):
static bool IsKeyPressed(Keys key)
{
keyState = Keyboard.GetState();
if (keyState.IsKeyDown(key))
{
return true;
}
else
{
return false;
}
}
dann funktioniert es:/aber ich brauche, dass preKeyState variabel, da Ich möchte, egal wie lange ich zum Beispiel halte, einen Schlüssel, um nur einen Buchstaben zu drucken, bis ich diesen Schlüssel loslasse:/
Nicht sicher, ob das irgendetwas repariert, aber Sie wollen wahrscheinlich, dass sich diese Schlüssel gegenseitig ausschließen, also wäre es das Beste Verwandle diese 'if's in' else if's. – stybl
versuchte es, änderte nichts –
Behalten Sie es so. Es löst andere Probleme, die Sie noch nicht erkannt haben (zum Beispiel, wenn jemand 'A' * und *' Space' gleichzeitig drückt) – stybl