Steuerung von Grafikobjekten per Tastatur
Stell' Dir die Steuerung eines Mario-artiges Jump'n Run-Spieles vor: solange der Spieler die „Pfeil-nach-rechts“-Taste gedrückt hält, soll sich die Spielfigur nach rechts bewegen. Sobald der Spieler die Taste loslässt, sollt die Spielfigur stehenbleiben. Wie lässt sich das programmtechnisch umsetzen?
Wir könnten die Methoden onKeyDown
und onKeyUp
aus dem Kapitel über die Tastatur- und Mausereignisse nutzen. Da sie beim gerade geschilderten Ablauf nur jeweils einmal aufgerufen werden, die Spielfigur sich zwischen den beiden Methodenaufrufen aber weiter bewegen soll, müssten wir den Zustand „Pfeil-nach-rechts-Taste ist gerade unten“ dazwischen speichern und regelmäßig (z.B. in der act
-Methode) auswerten, um die Spielfigur weiter voranzubewegen.
Genau dabei unterstützt uns unser API: Jedes Grafikobjekt (genauer: jede von Actor abgeleitete Klasse) hat zwei Methoden isKeyUp(String key)
und isKeyDown(String key)
, mit denen sich jederzeit für jede Taste der Tastatur ermitteln lässt, ob sie gerade nach unten gedrückt ist. Diese Methoden nutzen wir, um den Zustand unserer Grafikobjekte in der act
-Methode regelmäßig zu verändern und sie so beispielsweise abhängig von den gedrückten Tasten zu bewegen.