Libgdx:设置另一个屏幕,但仍然是旧屏幕上的按钮激活

时间:2013-08-11 08:53:55

标签: java android libgdx

在我的libgdx game中,我有2个屏幕,menulist。 当我点击label屏幕中的menu时,我会点setscreen(list)。 显示新屏幕,菜单屏幕及其标签消失。

但是当我点击相同的位置时(从标签所在的菜单屏幕,但当然这些标签没有显示,因为我已经更改了屏幕),点击事件会响应。为什么呢?

注意:我的列表屏幕当前没有任何小部件的事件处理程序。

切换屏幕时,除了setscreen(anotherscreen)之外我还需要做些什么才能停用旧屏幕吗?

3 个答案:

答案 0 :(得分:13)

我改变了这个:

我使用该屏幕的阶段变量

将输入处理器移动到该屏幕的show()方法
public void show() {
    ...
    Gdx.input.setInputProcessor(stage);

}

之前我只在屏幕的构造函数中设置它,所以即使我正在更改屏幕,输入处理器仍然附加到最后创建的屏幕的阶段

答案 1 :(得分:2)

上面的答案非常适合我,因为我在第二个屏幕上没有使用InputProcessor。

我的解决方案是在setScreen之后将Inputprocessor设置为null。

Gdx.app.getApplicationListener().setScreen(new Screen()); Gdx.input.setInputProcessor(null);

答案 2 :(得分:0)

刚刚打破了我的头。我在show方法中更改了屏幕,但之后调用了Gdx.input.setInputProcessor(stage)。在新屏幕的show方法运行后,该方法仍然完成,从而恢复到上一阶段。

因此,请务必在更改屏幕之前致电Gdx.input.setInputProcessor(stage),或在更改屏幕后致电return