以下命令:
game.setScreen(new GameScreen());
Run Code Online (Sandbox Code Playgroud)
启动你进入一个类似Android的新屏幕startActivity().
但是那你怎么离开屏幕并返回叫你的屏幕(类似于Android的finish())?
另外,是否有显示LibGDX与Android类似的屏幕生命周期的图形?
屏幕生命周期实际上与Android的生命周期基本相同,因为这是他们在设计libgdx时必须涵盖的内容.基本上Android生命周期回调事件只是转发给LibGDX ApplicationListener,后者又将它转发给你Game,后者又将它转发给你Screen.
生命周期通常如下(使用Screen术语):
__________________________________
| ____ ____ |
V V | V | |
show --> resume --> resize <-- render --> pause --> hide --> dispose
| | ^ ^
|__________|__________|__________|
Run Code Online (Sandbox Code Playgroud)
您可以看到show和hide通常只调用一次.show()将在您开始时调用,当您将其Screen设置为当前值时,hide()将在您更改屏幕时调用.请注意,dispose()它不是自动校对的,因此您应该确保在切换屏幕时调用它,或者在hide()方法中调用它.
resume()并且pause()可以多次调用,但至少调用一次.切换到另一个应用程序或主屏幕将导致一个pause -> resume循环.
render()并且resize()通常被称为很多,但在任何特定顺序中都不是必需的.调整桌面上的窗口大小可能会导致resize()连续多次调用,而无需render()在它们之间进行任何调用.但当然resize()也可以完全跳过.
如果您想切换回之前已经可见的屏幕,那么您需要为第二个屏幕提供对第一个屏幕的引用,因此可以再次将其设置为当前屏幕.但这也会从一开始就引起整个生命周期.
另一种选择是将第二个屏幕保留为第一个屏幕的属性并通过screen2.show(); screen2.resume();自己"自己"模拟屏幕开关,然后将所有事件转发到第一个屏幕中的第二个屏幕.
| 归档时间: |
|
| 查看次数: |
5709 次 |
| 最近记录: |