在Libgdx中部署屏幕的正确方法

时间:2013-10-15 22:34:30

标签: java android libgdx dispose

在Libgdx中完全处理屏幕的正确方法是什么?目前,如果我单击上一个屏幕上的按钮所在的位置,那么按钮仍然可以完成我在屏幕上的操作。我应该.dispose()dispose()方法中尽我所能吗?或者是否有更简单的方法来处理屏幕上的所有内容?

3 个答案:

答案 0 :(得分:17)

不幸的是没有更简单的方法。这些类不会共享任何类型的常见“Disposable”界面,或类似的东西,以自动执行此操作。具有dispose()方法的所有内容都需要在不再需要时手动处理。

这对Screens本身也有效。切换Screens时,它们不会自动处理,但您需要自己执行此操作(在致电Game.setScreen()之前)。

另一方面,这不是什么大问题。只需浏览Screen中的所有内容,然后检查是否需要处理。如果有处置方法,请在dispose()的{​​{1}}中进行调用。

但这并不能解释您对上一个Screen中隐形按钮的行为。我想你使用了Screen并使用了Stage。更改屏幕时不会更改此设置,您必须将输入处理器设置为当前Gdx.input.setInputProcessor(stage);的{​​{1}},或处理当前Stage中输入的任何内容。这样“旧”阶段就不会再有任何输入了。

答案 1 :(得分:2)

我可以确认这个问题没有将输入过程传递到一个新阶段。这将导致所描述的“鬼”按钮。

答案 2 :(得分:0)

不幸的是LibGDX API documentation

  

请注意,不会自动调用dispose()。

所以我所做的是将所有一次性用品(例如StageSkinTexture ...等)放入屏幕中的hide()方法中,因为{{ 1}}自动调用,效果很好!

示例:

hide()