在我的libgdx game
中,我有2个屏幕,menu
和list
。
当我点击label
屏幕中的menu
时,我会点setscreen(list)
。
显示新屏幕,菜单屏幕及其标签消失。
但是当我点击相同的位置时(从标签所在的菜单屏幕,但当然这些标签没有显示,因为我已经更改了屏幕),点击事件会响应。为什么呢?
注意:我的列表屏幕当前没有任何小部件的事件处理程序。
切换屏幕时,除了setscreen(anotherscreen)
之外我还需要做些什么才能停用旧屏幕吗?
答案 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
。