libgdx 学习笔记七 libgdx应用程序生命周期
簡介
本章內(nèi)容描述libGDX?應(yīng)用程序的結(jié)構(gòu)和怎么根據(jù)不同的平臺(tái)版本使用不同的后臺(tái)
The Application
做為任意libGDX 工程的主入口點(diǎn)。Application 決定平臺(tái)的版本和后臺(tái)圖形。Application?接口提供了合適的方法來訪問Graphics,?Audio,?Input?and?File?I/O模塊。也提供了跨平臺(tái)的Logging?模塊。
LibGDX 當(dāng)前支持2個(gè)后端一個(gè)是desktop applications 另一個(gè)是Android applications 。創(chuàng)建libGDX 應(yīng)用程序,首先必須實(shí)現(xiàn)ApplicationListener?接口
The Application Listener
為了初始化application必須實(shí)現(xiàn)這個(gè)接口, 它用來更新游戲狀態(tài)(即邏輯),渲染出項(xiàng),暫停游戲,保存狀態(tài),釋放資源等。
它也有一個(gè)處理application 聲明周期事件的地方。每個(gè)應(yīng)用,不管后臺(tái)平臺(tái)版本都必須實(shí)現(xiàn)ApplicationListener?接口。所有平臺(tái)都會(huì)存在并要實(shí)現(xiàn)這個(gè)接口。
應(yīng)用程序中,游戲循環(huán)和ApplicationListener式游戲邏輯實(shí)現(xiàn)的地方。
一個(gè)簡單的實(shí)現(xiàn)如下:
public class MyGame implements ApplicationListener {public void create () {
// STUB
}
public void render () {
// STUB
}
public void resize (int width, int height) {
// STUB
}
public void pause () {
// STUB
}
public void resume () {
// STUB
}
public void dispose () {
// STUB
}
這些方法 由在應(yīng)用聲明周期中的事件觸發(fā),描述如下:
| 方法名 | 描述 |
| create () | 當(dāng)應(yīng)用程序創(chuàng)建時(shí),此方法被調(diào)用一次 |
| resize(int width, int height) | ?每次游戲屏幕重置尺寸并且不是暫停狀態(tài)得時(shí)候調(diào)用此方法。在create()后調(diào)用一次 參數(shù)是屏幕被重置后的新寬度和高度 |
| render () | 每次渲染發(fā)生時(shí)游戲循環(huán)調(diào)用此方法。游戲更新發(fā)生在繪制之前。意思就是說先處理邏輯,在處理繪制。 |
| pause () | 在應(yīng)用destroyed前調(diào)用此方法。在android中檔Home鍵按下或者由重新進(jìn)入程序時(shí)調(diào)用此方法。在桌面應(yīng)用中,退出應(yīng)用時(shí)在dispose()?之間調(diào)用 這是一個(gè)保存游戲狀態(tài)的好地方,在android中resume ()不一定會(huì)被調(diào)用。 |
| resume () | 這個(gè)方法僅在android中調(diào)用, 當(dāng)應(yīng)用獲得焦點(diǎn)時(shí). 桌面應(yīng)用中將不會(huì)調(diào)用此方法。 |
| dispose () | ?當(dāng)應(yīng)用destroyed時(shí),調(diào)用此方法,在pause()之后 |
應(yīng)用程序生命周期
上面提到的方法在應(yīng)用程序的整個(gè)生命周期之間會(huì)被觸發(fā)
以下圖表顯示一個(gè)libGDX應(yīng)用經(jīng)過的不同階段:
創(chuàng)建一個(gè)桌面應(yīng)用程序
以下類從先前的MyGame listener使用lwjgl創(chuàng)建一個(gè)桌面應(yīng)用:
public class MyDesktopGame {public static void main(String[] args) {
new LwjglApplication(new MyGame(), "My Game", 480, 320, false);
}
}
?以下是運(yùn)行結(jié)果:
他創(chuàng)建了一個(gè)lwjgl后臺(tái)應(yīng)用,像素為480X320。最后一個(gè)參數(shù)表明OpenGL ES 2沒有被使用。
以下類創(chuàng)建了一個(gè)桌面應(yīng)用使用JOGL作為后臺(tái),使用了MyGame
import com.badlogic.gdx.backends.jogl.JoglApplication;public class MyDesktopGame {
public static void main(String[] args) {
new JoglApplication(new MyGame(), "My Game", 480, 320, false);
}
}
第一個(gè)例子中需要包含以下庫文件。
-
gdx.jar
-
gdx-natives.jar
-
gdx-backend-lwjgl.jar
-
gdx-backend-lwjgl-natives.jar
第二個(gè)例子中需要包含以下庫文件。
-
gdx.jar
-
gdx-natives.jar
-
gdx-backend-jogl.jar
-
gdx-backend-jogl-natives.jar
桌面應(yīng)用程序構(gòu)造函數(shù)中包含5個(gè)參數(shù)
| ApplicationListener?listener | 為應(yīng)用程序創(chuàng)建的ApplicationListener實(shí)例 |
| String title | 在應(yīng)用程序的 title bar上顯示的title |
| int width | 屏幕高度 |
| int height | 屏幕高度 |
| boolean useGL2 | 是否使用GL2,true使用2,false使用1.x |
創(chuàng)建Android應(yīng)用程序
創(chuàng)建android應(yīng)用程序涉及到的更多,但仍然很簡單。
請(qǐng)參考My First Triangle?教程 設(shè)置android工程。
你需要以下目錄和文件
-
armeabi/
-
armeabi-v7a/
-
gdx-backend-android.jar
-
gdx.jar
總結(jié)
以上是生活随笔為你收集整理的libgdx 学习笔记七 libgdx应用程序生命周期的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【RK3399Pro学习笔记】十四、RO
- 下一篇: 文件与目录操作