libgdx离开屏幕和屏幕生命周期

时间:2014-01-11 13:40:10

标签: java libgdx

以下命令:

game.setScreen(new GameScreen());

启动您进入新屏幕,类似于Android的startActivity()

但是,你如何离开屏幕并返回呼叫你的屏幕(类似于Android的finish())?

另外,是否有图片显示LibGDX与Android相似的屏幕生命周期?

1 个答案:

答案 0 :(得分:8)

屏幕生命周期实际上与Android的生命周期基本相同,因为这是他们在设计libgdx时必须涵盖的内容。基本上,Android生命周期回调事件只会转发给LibGDX的ApplicationListener,后者会将其转发给GameScreen会将其转发到Screen

生命周期通常如下(使用 __________________________________ | ____ ____ | V V | V | | show --> resume --> resize <-- render --> pause --> hide --> dispose | | ^ ^ |__________|__________|__________| 术语):

show()

您可以看到show和hide通常只调用一次。 Screen将在开头调用,当您将hide()设置为当前值时,将在您更改屏幕时调用dispose()。请注意,hide()未自动加入,因此您应确保在切换屏幕时调用它,或使用resume()方法调用它。

pause()pause -> resume可以多次调用,但至少调用一次。切换到另一个应用或主屏幕将导致另外一个render()周期。

resize()resize()通常被称为很多,但在任何特定顺序中都不是必需的。在桌面上调整窗口大小可能会导致连续多次调用render(),而不会在其间进行任何resize()调用。但当然screen2.show(); screen2.resume();也可以完全跳过。

如果要切换回之前已经可见的屏幕,则需要为第二个屏幕指定第一个屏幕,因此可以再次将其设置为当前屏幕。但这也会从一开始就引起整个生命周期。

另一种选择是将第二个屏幕保留为第一个屏幕的属性并自己“模拟”屏幕开关,通过自己调用{{1}},然后将所有事件转发到第一个屏幕中的第二个屏幕

相关问题