2016-05-10 19 views
0

Ich mache ein Idle Game, aber jetzt weiß ich nicht, wie ich die Hörer des HUD machen soll. Es ist in Ordnung, einen InputListener() in jede Taste meines HUD zu instanziieren? Ich habe gerne 20 Knöpfe oder Schauspieler zum anfassen.LibGDX-Scene2D: Wie mache ich hud mit mehreren Tasten?

+0

Warum nicht? ....... – Tenfour04

+0

Ich meine, es ist die einzige Option? Weil ich auf die Variablen und Funktionen des "Knopfes" von der TouchDown Methode von der InputListener Klasse zurückgreifen muss (ich weiß, dass ich zugreifen kann, aber ich Parameter übergeben muss, oder eine innere Klasse erzeuge, die InputListener, etc .. erweitert). Es ist wie viel Code, stellen Sie sich 20 Schaltflächen vor, die erweiterte InputListener-Klassen instanziieren, jede Klasse mit ihrem eigenen Code nur für eine Schaltfläche. –

+0

Ich verstehe Ihr Problem nicht wirklich. Es klingt, als hättest du ein komplexes Setup. Der Listener muss nur eine Methode in 'touchDown' aufrufen. Sie könnten alternativ jedem Listen den gleichen Listener zuweisen und die 'touchDown'-Methode' event.getListenerActor() 'auf alle Ihre Schaltflächen überprüfen lassen, um zu entscheiden, welche Methode aufgerufen werden soll. Wenn Sie möchten, dass sich Ihre Tasten mehr wie die Tasten eines Betriebssystems verhalten (Abbrechen durch Drücken der Taste und Loslassen), dann verwenden Sie ChangeListener anstelle von InputListener und verwenden Sie 'changed' anstelle von' touchDown', um darauf zu reagieren. – Tenfour04

Antwort

1

Verwenden Sie einfach addListener() Methode für jeden Schauspieler, den Sie sein möchten klinkbar. Ich habe ClickListener für diesen Zweck verwendet, obwohl es manchmal empfohlen wird, ChangeListener aufgrund des besseren Verhaltens zu verwenden, wenn die Schaltfläche deaktiviert wird.

Also, was Sie tun müssen, ist nur

Button button; 

    //creating button... 

    button.addListener(new ClickListener(){ 
     @Override 
     public void clicked(InputEvent event, float x, float y) 
     { 
      //Do something 
     } 
    }); 

und das gleiche für weitere Tasten/Akteure auf dem HUD Bühne.

Sie können auch take a look at this thread, wo ich nach der Leistung von vielen Zuhörern gefragt habe.

+0

Dieser Thread hat mir sehr geholfen, danke –

1

Hier ist eine Szene2D-Taste, die wirklich einfach zu bedienen ist, verstehe ich nicht, was das Problem ist oder warum Sie besorgt über einen Listener auf jeder Schaltfläche oder UI-Objekt, scheint ziemlich logisch für mich.

button = new Button(buttonStyle); 
    button.setPosition(x, y); 
    button.addListener(new ClickListener() { 
     @Override 
     public void clicked(InputEvent event, float x, float y) { 
      Gdx.app.log(TAG, "Button clicked"); 
     }; 
    }); 
Verwandte Themen