在我的 libgdxgame
中,我有 2 个屏幕,menu
并且list
. 当我单击屏幕label
中的 a 时menu
,我会执行setscreen(list)
. 新屏幕出现,菜单屏幕及其标签消失。
但是当我点击相同的位置时(从标签所在的菜单屏幕,但当然这些标签没有显示,因为我已经改变了屏幕)点击事件响应。为什么?
注意:我的列表屏幕目前没有任何小部件的事件处理程序。
切换屏幕时,我需要做的不仅仅是setscreen(anotherscreen)
停用旧屏幕吗?
我改变了这个:
我使用该屏幕的阶段变量将输入处理器移动到该屏幕的 show() 方法
public void show() {
...
Gdx.input.setInputProcessor(stage);
}
在我只在屏幕的构造函数中设置它之前,所以即使我正在更改屏幕,输入处理器仍然连接到最后创建的屏幕的阶段
上面的答案对我有用,因为我不在第二个屏幕中使用 InputProcessor。
我的解决方案是在 setScreen 之后将 Inputprocessor 设置为 null。
Gdx.app.getApplicationListener().setScreen(new Screen());
Gdx.input.setInputProcessor(null);
刚刚打破了我的头。show
我在方法中更改了屏幕,但Gdx.input.setInputProcessor(stage)
在那之后调用了。新屏幕的方法运行后,该方法仍然完成show
,从而恢复到上一阶段。
因此,请确保Gdx.input.setInputProcessor(stage)
在更改屏幕之前或更改屏幕return
之后致电。