LibGdx : 在不同 类 中使用 setInputProcessor(stage)

LibGdx : Using setInputProcessor(stage) in different classes

我正在使用 LibGdx 开发 android 游戏;目前,有 2 个带有多个按钮的菜单屏幕,一个 mainMenu 和一个 gameOverMenu。 我需要使用 Gdx.input.setInputProcessor(stage);在两个 classes 中,但我不能...只有一个屏幕在工作。

我在论坛上搜索了很多,只找到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);

我遇到了麻烦,因为它用于在同一个 class 中安装多个处理器。

但我只需要两个单独的 classes 中的 1 个处理器。

目前,我有这个...但它不起作用:

CLASS 1 Gdx.input.setInputProcessor(stageMainMenu);

CLASS 2 Gdx.input.setInputProcessor(stageGameOverMenu);

编辑: @MennoGouw 我引用的问题是我想将 Stage 对象放入 addProcessor,而不是 InputProcessor。 我不想创建自己的处理器,我会使用 ClickListener。 此外,我真的不需要同时使用两个处理器。实际上,这是两个不同的屏幕。但是InputProcessor没有明确的方法。

此外我不知道我应该建在哪里 InputMultiplexer .

我会尽量说得更清楚,我有: MyGame.java 只有一种方法 ( public void create() { mainMenuScreen = new MainMenu(this); //gameScreen = new MainGame(this); gameOverScreen = new GameOver(这个); setScreen(mainMenuScreen);<br> })

和GameOver.java & MainMenu.java。 (两个画面) 如果我将 Gdx.input.setInputProcessor(stageName) 放在构造函数中,则只有两个运行之一。 否则,在 show() 方法中,它会崩溃。

感谢您的宝贵时间

InputMultiplexer 有什么问题?它是为您寻找的东西而制作的。

您也可以使用这段代码分别在每个Stage中添加处理器:

首先在您的初始游戏 class 函数中设置多路复用器:

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

稍后检查是否必须添加输入处理器:

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