gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:11:04 25 4
gpt4 key购买 nike

以下命令:

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通常只调用一次。 show() 将在开始时被调用,当您的 Screen 设置为当前屏幕时, hide() 将被调用,当您改变屏幕。请注意 dispose() 不会自动调用,因此您应该确保在切换屏幕时调用它,或者在您的 hide() 方法中调用它。

resume()pause() 可以调用多次,但至少调用一次。切换到另一个应用程序或主屏幕将导致更多的 pause -> resume 循环。

render()resize() 通常会被多次调用,但没有必要按任何特定顺序调用。在桌面上调整窗口大小会导致连续多次调用 resize(),中间没有任何 render() 调用。但当然 resize() 也可以完全跳过。

如果你想切换回之前已经可见的屏幕,那么你需要给第二个屏幕一个对第一个屏幕的引用,这样它就可以再次设置为当前屏幕。但这也会从一开始就导致整个生命周期。

另一种选择是将第二个屏幕保留为第一个屏幕的属性,并通过调用 screen2.show(); 自己“模拟”屏幕切换; screen2.resume(); 自己,然后将所有事件转发到第一个屏幕中的第二个屏幕。

关于java - libgdx 离开屏幕和屏幕生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21062928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com