2013-08-11 4 views
6

Nel mio libgdx game, ho 2 schermi, menu e list. Quando faccio clic su uno sullo schermo, faccio un setscreen(list). Viene visualizzata la nuova schermata e scompare la schermata del menu insieme alle sue etichette.Libgdx: impostazione di un altro schermo, ma ancora pulsanti dal vecchio schermo attivo

Ma quando faccio clic sulle stesse posizioni (dalla schermata del menu in cui erano le etichette, ma ovviamente quelle etichette non vengono visualizzate come ho cambiato le schermate) l'evento click risponde. Perché?

nota: La schermata della mia lista attualmente non ha gestori di eventi per nessun widget.

Quando si passa da una schermata all'altra devo fare qualcosa di più della semplice setscreen(anotherscreen) per disattivare la vecchia schermata?

risposta

13

I cambiato questo:

ho spostato il processore input al metodo show() di detto schermo utilizzando variabile fase del detto schermo

public void show() { 
    ... 
    Gdx.input.setInputProcessor(stage); 

} 

prima stavo installando questo solo nel costruttore della schermo, quindi anche se stavo cambiando lo schermo, il processore di input era ancora collegato allo stage dello schermo creato

+1

Questo ha funzionato per me. Puoi dare una piccola spiegazione su come funziona e perché? – user5493029

2

La risposta sopra adiddnt lavoro per me perché non lavoro con un InputProcessor nella seconda schermata.

La mia soluzione era di impostare il processore di input su null dopo setScreen.

Gdx.app.getApplicationListener().setScreen(new Screen()); Gdx.input.setInputProcessor(null);

0

appena rotto la mia testa su questo. Ho cambiato le schermate nel metodo show ma dopo aver chiamato Gdx.input.setInputProcessor(stage). Il metodo è ancora completato dopo che è stato eseguito il metodo show del nuovo schermo e quindi si ritorna alla fase precedente.

Quindi assicuratevi di chiamare Gdx.input.setInputProcessor(stage) prima di cambiare schermo o return dopo aver cambiato schermata.