我正在使用LibGdx开发安卓游戏;目前,有2个菜单屏幕,包括几个按钮,一个mainMenu和一个gameOverMenu。 我需要使用Gdx.input.setInputProcessor(stage);在这两个班级但我不能......只有一个屏幕工作。
我在论坛上搜索了很多,我发现只有Gdx.input.setInputProcessor(inputMultiplexer)......
InputProcessor inputProcessorOne = new CustomInputProcessorOne();
InputProcessor inputProcessorTwo = new CustomInputProcessorTwo();
InputMultiplexer inputMultiplexer = new InputMultiplexer();
inputMultiplexer.addProcessor(inputProcessorOne);
inputMultiplexer.addProcessor(inputProcessorTwo);
Gdx.input.setInputProcessor(inputMultiplexer);
我遇到了麻烦,因为它是为了在同一个类中使用多个处理器而使用的。
但我只需要在两个不同的类中使用1个处理器。
目前,我有这个...但它不起作用:
CLASS 1
Gdx.input.setInputProcessor(stageMainMenu);
CLASS 2
Gdx.input.setInputProcessor(stageGameOverMenu);
编辑: @MennoGouw 我引用的问题是,我想将Stage Object放在addProcessor中,而不是InputProcessor。 我不想创建自己的处理器,我使用ClickListener。 此外,我并不需要同时使用两个处理器。实际上,这是两个不同的屏幕。但是,InputProcessor没有明确的方法。
除此之外,我不知道应该在哪里建造InputMultiplexer
。
我会更加清楚,我有:
MyGame.java只有一个方法(
public void create() {
mainMenuScreen = new MainMenu(this);
//gameScreen = new MainGame(this);
gameOverScreen = new GameOver(this);
setScreen(mainMenuScreen);
)
}
GameOver.java& MainMenu.java。 (两个屏幕)
如果我将Gdx.input.setInputProcessor(stageName)
放在构造函数中,则只运行其中一个。
否则,在show()方法中,它会崩溃。
感谢您的时间
答案 0 :(得分:2)
InputMultiplexer
的问题是什么?它是为您所寻找的东西而制作的。
您也可以使用这段代码分别在每个阶段添加处理器:
首先在init Game类函数中设置Multiplexer:
Gdx.input.setInputProcessor(new InputMultiplexer());
稍后检查是否必须添加输入处理器:
InputMultiplexer inputMultiplexer = (InputMultiplexer) Gdx.input.getInputProcessor();
if (!inputMultiplexer.getProcessors().contains(stageMainMenu))
inputMultiplexer.addProcessor(stageMainMenu);