Java Libgdx:设置另一个屏幕,但旧屏幕上的按钮仍处于活动状态
在我的libgdxJava Libgdx:设置另一个屏幕,但旧屏幕上的按钮仍处于活动状态,java,android,libgdx,Java,Android,Libgdx,在我的libgdx游戏中,我有两个屏幕,菜单和列表。 当我在菜单屏幕中单击标签时,我会执行设置屏幕(列表)。 新屏幕显示,菜单屏幕及其标签消失 但当我点击相同的位置时(从标签所在的菜单屏幕,但这些标签当然不会显示,因为我已经更改了屏幕),点击事件会响应。为什么? 注意:我的列表屏幕目前没有任何小部件的事件处理程序 切换屏幕时,除了设置屏幕(另一个屏幕)以停用旧屏幕之外,我还需要做其他事情吗?我更改了以下内容: 我使用该屏幕的stage变量将输入处理器移动到该屏幕的show()方法 public
游戏中,我有两个屏幕,菜单
和列表
。
当我在菜单
屏幕中单击标签
时,我会执行设置屏幕(列表)
。
新屏幕显示,菜单屏幕及其标签消失
但当我点击相同的位置时(从标签所在的菜单屏幕,但这些标签当然不会显示,因为我已经更改了屏幕),点击事件会响应。为什么?
注意:我的列表屏幕目前没有任何小部件的事件处理程序
切换屏幕时,除了设置屏幕(另一个屏幕)
以停用旧屏幕之外,我还需要做其他事情吗?我更改了以下内容:
我使用该屏幕的stage变量将输入处理器移动到该屏幕的show()方法
public void show() {
...
Gdx.input.setInputProcessor(stage);
}
在此之前,我只在屏幕的构造器中设置此选项,因此即使我正在更改屏幕,输入处理器仍然连接到上次创建的屏幕的阶段上面的答案对我无效,因为我在第二个屏幕中不使用输入处理器 我的解决方案是在设置屏幕后将Inputprocessor设置为null
Gdx.app.getApplicationListener().setScreen(新屏幕());
Gdx.input.setInputProcessor(null)代码>这件事让我头晕目眩。我在show
方法中更改了屏幕,但之后调用了Gdx.input.setInputProcessor(stage)
。在运行新屏幕的show
方法后,该方法仍然完成,因此返回到上一阶段
因此,请确保在更改屏幕之前调用Gdx.input.setInputProcessor(stage)
,或者在更改屏幕之后调用return
。这对我很有效。你能解释一下这两者是如何协同工作的吗?为什么?