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);
我正在使用 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);