Dovresti essere in grado di utilizzare un Stage
per gestire l'interfaccia utente. Per ottenere il corretto funzionamento dell'input, è necessario aggiungere uno InputMultiplexer
in modo che lo schema di input corrente sia in input sia per lo schema di immissione corrente Stage
.
Per configurarlo, farete qualcosa di simile:
InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(stage);
multiplexer.addProcessor(gameScreenInputProcessor);
Gdx.input.setInputProcessor(multiplexer);
(Esempio di codice basato sul codice da https://code.google.com/p/libgdx/wiki/InputEvent)
Si noti che l'ordine è importante (Sto indovinando' Voglio che il palcoscenico prenda prima gli eventi per vedere se l'interfaccia utente viene toccata o meno). Inoltre, il valore di ritorno booleano dai gestori di eventi di input è più importante con un multiplexer, poiché gli eventi "gestiti" non verranno propagati dal mutlifivo. Gli eventi dell'interfaccia all'interno dello Stage
hanno il loro flag "gestito" (per lo più fa la cosa giusta ma ci sono alcune sottili differenze).
Un'alternativa alla InputMultiplexer
sarebbe quello di creare un "GameScreenActor" (una nuova sottoclasse di Actor
) che contiene lo schermo partita in corso che si collega al globale Stage
. Dovresti spostare la tua elaborazione di input sull'approccio scena2d, però. Questa probabilmente non è la scelta giusta per te, ma è valida.
fonte
2013-03-04 15:27:32
Ok, pensavo di sì ... Ho controllato la documentazione di InputMultiplexer ... la tua risposta ha senso. Proverò questo approccio ... speriamo che funzioni. Molto bene! :) Ho familiarità con la gestione degli input in Android, spero che funzioni in modo simile :) – Veljko