以下命令:libgdx离开屏幕和屏幕周期
game.setScreen(new GameScreen());
启动你进入一个新的屏幕,类似于Android的startActivity()
。
但是,你如何离开屏幕并返回调用你的屏幕(类似于Android的finish()
)?
另外,是否有图形显示类似于Android的LibGDX
的屏幕生命周期?
以下命令:libgdx离开屏幕和屏幕周期
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()
将在开始时被调用,当您的Screen
被设置为当前值时,当您更改屏幕时将调用hide()
。请注意,dispose()
没有自动调整,所以您应该确保在切换屏幕时调用它,或者在hide()
方法中调用它。
resume()
和pause()
可以多次调用,但至少一次。切换到其他应用程序或主屏幕将导致再次出现pause -> resume
循环。
render()
和resize()
通常被称为很多,但没有任何特定顺序的必要。在桌面上调整窗口大小会导致连续拨打resize()
,而不需要拨打任何render()
。但当然resize()
也可以完全跳过。
如果你想切换回原已可见之前,那么你需要给第二个屏幕的第一个参考的屏幕,因此它可以被重新设置为当前屏幕。但那也将从一开始就导致整个生命周期。
另一种选择是将第二个屏幕保留为第一个屏幕的属性,通过自己调用screen2.show(); screen2.resume();
自己“模拟”屏幕切换,然后将所有事件转发到第一个屏幕中的第二个屏幕。
谢谢只是为了清楚show()被称为她,你做setScreen()的权利? – NewDev
@NewDev是的,正好。 – noone
你如何调用dispose()我打电话时发生崩溃?我setScreen()返回到闪屏,然后检测是否我刚刚从游戏屏幕返回,()我再次触发一组故障感谢 – NewDev