2017-03-28 5 views
0

Ich versuche eventListner auf jedem Bild (PlayIcon, PauseIcon), aber es funktioniert nicht mit Retuschieren und Landungs ​​Wie kann ich einem Texturpacker in libgdx Action hinzufügen?

hier ist mein Code zu erstellen:

TextureAtlas buttonsPlayPause = new TextureAtlas("uiii/uiii.pack"); 
skin.addRegions(buttonsPlayPause); 
TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle(); 
textButtonStyle.font = font; 
textButtonStyle.up = skin.getDrawable("pauseIcon"); 
textButtonStyle.checked = skin.getDrawable("playIcon"); 
TextButton button = new TextButton("", textButtonStyle); 
button.setY(pauseY); 
button.setX(Gdx.graphics.getWidth()/6); 
button.setSize(150,150); 
stage.addActor(button); 

//pause/playAction 
button.addListener(new ClickListener() { 
     @Override 
     public void touchUp(InputEvent event, float x, float y, int pointer, int button) {resume(); 
       } 
     @Override 
     public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     pause(); 
      return true; 
     } 
    }); 

Was passiert nun, dass die Taste Hörer verhält als 'istouched()' und nicht 'just touched()'. Wenn ich auf den Knopf klicke, wird das Spiel angehalten, aber wenn ich meinen Finger entferne, gibt es keine Pause, das Spiel läuft.

+0

Haben Sie durch diesen Gdx.input.setInputProcessor (stage) die Stufe als InputProcessor gesetzt; – Aryan

+0

In Ihrem Kommentar ist immer noch unklar, was Sie vorhaben und was mit dem aktuellen Verhalten nicht stimmt. – Tenfour04

+0

@ Tenfour04. Was nun passiert, ist, dass sich der Tasten-Listener wie 'istouched()' und nicht 'justtouched()' verhält. Wenn ich auf die Schaltfläche klicke, wird das Spiel angehalten, aber wenn ich meinen Finger entferne, gibt es keine Pause, das Spiel läuft – Lynob

Antwort

1

Wenn ich richtig verstanden habe, möchte diese Taste zwischen Play und Pause umschalten und entweder pause() oder resume() aufrufen, basierend auf dem aktuellen Status.

Die Button-Klasse hat bereits eine eingebaute interne InputListener, alles, was Sie so brauchen, ist ein Change auf Tastendruck zu reagieren:

//pause/playAction 
button.addListener(new ChangeListener() { 
    @Override 
    public void changed (ChangeEvent event, Actor actor) { 
     if (button.isChecked()) 
      resume(); 
     else 
      play(); 
    } 
}); 

Stellen Sie sicher, final markieren Sie es, wenn Sie es zuerst erklären, so die Listener kann darauf verweisen:

//... 
final TextButton button = new TextButton("", textButtonStyle); 
//... 
Verwandte Themen