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

New*_*Dev 3 java libgdx

以下命令:

game.setScreen(new GameScreen());
Run Code Online (Sandbox Code Playgroud)

启动你进入一个类似Android的新屏幕startActivity().

但是那你怎么离开屏幕并返回叫你的屏幕(类似于Android的finish())?

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

noo*_*one 9

屏幕生命周期实际上与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();自己"自己"模拟屏幕开关,然后将所有事件转发到第一个屏幕中的第二个屏幕.