Gdx.input.setInputProcessor 用于多个屏幕。 (LIBGDX,构思)
Gdx.input.setInputProcessor for several Screens. (LIBGDX, Conceptional)
我有:
- 一个 Main ApplicationListener
- 我根据上下文在 Main 中使用
setScreen(screen)
设置的几个屏幕。
- 每个屏幕都有自己的 Inputlisteners 阶段。
在哪里以及如何为不同的屏幕设置 Gdx.input.setInputProcessor
?
我的意思是切换屏幕时我必须取消旧屏幕的所有监听器并从新屏幕添加新的监听器,这样它们就不会重叠。
我不能在屏幕的构造函数中执行此操作,因为它只被称为一个。
我可以在屏幕的@Override.resize 方法中做到这一点,但我想这不是我应该做的?
我应该在哪里做这个?
您应该在 show()
方法中调用 Gdx.input.setInputProcessor()
。
因为screen.show()
会在你每次调用时调用setScreen(screen);
而且你不需要删除旧的,因为函数 Gdx.input.setInputProcessor()
很简单:
@Override
public void setInputProcessor (InputProcessor processor) {
this.processor = processor;
}
所以它取代了旧的。
我有:
- 一个 Main ApplicationListener
- 我根据上下文在 Main 中使用
setScreen(screen)
设置的几个屏幕。 - 每个屏幕都有自己的 Inputlisteners 阶段。
在哪里以及如何为不同的屏幕设置 Gdx.input.setInputProcessor
?
我的意思是切换屏幕时我必须取消旧屏幕的所有监听器并从新屏幕添加新的监听器,这样它们就不会重叠。 我不能在屏幕的构造函数中执行此操作,因为它只被称为一个。 我可以在屏幕的@Override.resize 方法中做到这一点,但我想这不是我应该做的?
我应该在哪里做这个?
您应该在 show()
方法中调用 Gdx.input.setInputProcessor()
。
因为screen.show()
会在你每次调用时调用setScreen(screen);
而且你不需要删除旧的,因为函数 Gdx.input.setInputProcessor()
很简单:
@Override
public void setInputProcessor (InputProcessor processor) {
this.processor = processor;
}
所以它取代了旧的。