Kann ich bei LibGDX einen InputListener für mehrere Buttons verwenden?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ja das sollte möglich sein.  

Die Methoden des `InputListener`s bekommen alle den Parameter "InputEvent". Dieses InputEvent hat eine Methode "getRelatedActor", welche den Actor liefert, welcher das Event ausgelöst hat.

Somit kannst du eine Instanz des InputListeners erstellen, welche sich den "RelatedActor" geben lässt. Dieser Actor kann dann mit deinen Buttons verglichen werden (mit "==", da es sich um die selbe Instanz des Actors handeln sollte) und je nach dem, welcher Actor es ist kannst du dann eben richtig reagieren.

Das Ganze könnte dann ca. so aussehen:

final TextButton b1 = new TextButon(...);
final TextButton b2 = new TextButton(...);
ClickListener listener = new ClickListener () {
    public void clicked(InputEvent e, float x, float y) {
      Actor actor = e.getRelatedActor();
      if (actor == b1)
          // Button 1
      else if (actor == b2)
          // Button 2
    }
}

Ich kenne LibGDX nicht, aber ich würde ein Key-Array mit demm Typ boolean machen und dann bei einem Tastendruck das jeweilige Teil auf true setzen, beim release der Taste auf false. Dann in einer Updatemethode testen, ob z.B. bollean Nr. 99 true entspricht und die jeweilige Aktion ausführen.

Lordloss666 
Fragesteller
 03.02.2016, 13:55

sorry leider bringt mir deine Antwort nichts, brauche jemanden der sich mit dem Listener System von Scene2d auskennt.. trotzdem danke

0