以下命令: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