6

在我的 libgdxgame中,我有 2 个屏幕,menu并且list. 当我单击屏幕label中的 a 时menu,我会执行setscreen(list). 新屏幕出现,菜单屏幕及其标签消失。

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

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

切换屏幕时,我需要做的不仅仅是setscreen(anotherscreen)停用旧屏幕吗?

4

3 回答 3

13

我改变了这个:

我使用该屏幕的阶段变量将输入处理器移动到该屏幕的 show() 方法

public void show() {
    ...
    Gdx.input.setInputProcessor(stage);

}

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

于 2013-08-11T10:51:05.327 回答
3

上面的答案对我有用,因为我不在第二个屏幕中使用 InputProcessor。

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

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

于 2013-10-05T11:19:44.997 回答
0

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

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

于 2017-07-22T21:39:30.613 回答