以下命令:
game.setScreen(new GameScreen());
启动您进入一个新的屏幕,类似于Android的startActivity()
。
但是,如何离开该屏幕并返回调用您的屏幕(类似于Android的finish()
)?
此外,是否有类似于Android的LibGDX
屏幕生命周期的图形展示?
屏幕生命周期其实与Android的生命周期非常相似,因为这就是设计libgdx时需要考虑的。基本上,Android生命周期回调事件只是转发到LibGDX的ApplicationListener
,然后再转发到你的Game
,最后转发到你的Screen
。
该生命周期通常如下所示(使用Screen
术语):
__________________________________
| ____ ____ |
V V | V | |
show --> resume --> resize <-- render --> pause --> hide --> dispose
| | ^ ^
|__________|__________|__________|
show()
和hide()
通常只会被调用一次。当您的Screen
被设置为当前屏幕时,show()
将在开始时被调用,而hide()
将在您更改屏幕时被调用。请注意,dispose()
不会自动调用,因此您应该确保在切换屏幕时调用它,或在您的hide()
方法中调用它。
resume()
和pause()
可以被多次调用,但至少一次。切换到另一个应用程序或主屏幕将导致一个额外的pause -> resume
循环。
render()
和resize()
通常会被频繁调用,但不一定按任何特定顺序。在桌面上调整窗口大小可能会导致多次连续调用resize()
,而没有任何render()
调用。但是当然也可能完全跳过resize()
。screen2.show(); screen2.resume();
自己“模拟”屏幕切换,然后在第一个屏幕中将所有事件转发到第二个屏幕。