2016-04-06 19 views
3

LibGdx kullanarak android oyunu geliştiriyorum; Şu an için, birkaç düğme, bir mainMenu ve bir gameOverMenu ile 2 menü ekranı vardır. Gdx.input.setInputProcessor (sahne) kullanmalıyım; Her iki sınıfta da ama yapamam ... Sadece bir ekran çalışıyor. o birkaç işlemci sahip olmak için kullanıldığından ... Onunla sorun yaşıyorumLibGdx: Farklı sınıflardaki setInputProcessor (sahne) kullanarak

InputProcessor inputProcessorOne = new CustomInputProcessorOne(); 
InputProcessor inputProcessorTwo = new CustomInputProcessorTwo(); 
InputMultiplexer inputMultiplexer = new InputMultiplexer(); 
inputMultiplexer.addProcessor(inputProcessorOne); 
inputMultiplexer.addProcessor(inputProcessorTwo); 
Gdx.input.setInputProcessor(inputMultiplexer); 

Ben forumunda bir sürü arama ve ben sadece Gdx.input.setInputProcessor (inputMultiplexer) bulundu aynı sınıf.

Ama sadece iki ayrı sınıfta 1 işlemciye ihtiyacım var. Şu an için

, ben bu var ... Ama çalışmıyor:

SINIF 1 Gdx.input.setInputProcessor(stageMainMenu);

SINIF 2 Gdx.input.setInputProcessor(stageGameOverMenu);

DÜZENLEME: @MennoGouw Sorun, ne alıntı ile, ben AddProcessor değil StageProcessor, StageProcessor koymak istiyorum. Kendi İşlemcimi oluşturmak istemiyorum, ClickListener kullanıyorum. Ayrıca, her iki işlemci de aynı anda kullanmam gerekmiyor. Gerçekten, bunlar iki farklı ekran. Ancak, InputProcessor için net bir yöntem yoktur. Ayrıca, InputMultiplexer'u nerede kurmam gerektiğini bilmiyorum.

Daha açık olmak çalışacağım, ben vardır: tek bir yöntem ( public void create() { mainMenuScreen = new MainMenu(this); //gameScreen = new MainGame(this); gameOverScreen = new GameOver(this); setScreen(mainMenuScreen);
}
)

Ve GameOver.java & MainMenu.java ile MyGame.java. (iki ekran) Yapıcıya Gdx.input.setInputProcessor(stageName)'u koyarsam, iki çalışmadan yalnızca biri. Else, show() yönteminde, çöker. Zaman

+0

Her iki işlemcinin de aynı anda çalışmasını istiyorsanız, kodunuzda yaptığınız gibi 'InputMultiplexer' kullanmalısınız. Sadece bir etkinliğe ihtiyacınız varsa, 'inputMultiplexer.clear' seçeneğini kullanabilir ve istediğiniz zaman yeni bir tane ekleyebilirsiniz. – Madmenyo

+0

Lütfen çağrılarınızı bağlamında setInputProcessor'a gösterin. Muhtemelen ilgili show() yöntemlerinde bunları çağırmalısınız. Bunun için bir çoklayıcıya ihtiyacınız yok çünkü aşamalar farklı ekranlarda. – Tenfour04

+0

@ Tenfour04 Ancak, hem show() yönteminde yalnızca InputProcessor kullandığımda, bir kez çalışır. (Oyunu başlatabilirim, ancak GameOver ekranındayken, bir düğmeye tıklarsam, çöker) – SkR

cevap

1

InputMultiplexer sakıncası nedir için

Teşekkür? Aradığın şey için yapılmış.

Ayrıca sırasıyla her Sahne içinde processers eklemek için kod parçasını kullanabilirsiniz:

İnit Oyun sınıfı fonksiyonunda İlk kurulum Multiplexer: Daha sonra

Gdx.input.setInputProcessor(new InputMultiplexer()); 

Ve eklemek zorunda olmadığını kontrol giriş işlemciniz:

InputMultiplexer inputMultiplexer = (InputMultiplexer) Gdx.input.getInputProcessor(); 
if (!inputMultiplexer.getProcessors().contains(stageMainMenu)) 
    inputMultiplexer.addProcessor(stageMainMenu);