一、 開發包下載
1) libgdx 開發包下載: google code(最新 libgdx-0.9.7.zip 2012.11.12)
2) libgdx 主幹源碼下載: github tags
二、 環境搭建
1) 添加開發jar包
libgdx的android開發包主要有 gdx.jar, gdx-backend-android.jar,以及 armeabi 和 armeabi-v7a (區別)
解壓libgdx -x.x.x.zip 檔案, 可以看到以下分類樹:
開發libgdx時,把畫藍色橫線的開發包拷貝到自己的Android項目libs目錄下,如下:
2) 添加源碼jar包
開發過程中,可能需要連結查看libgdx源碼,因此需要添加 gdx-backend-android-sources.jar 和 gdx-sources.jar 源碼包
添加步驟: 點擊libgdx開發jar包中的引用函數——》查看源碼——》Attach Source... ——》 選擇 gdx-backend-android-sources.jar 和 gdx-sources.jar 源碼包
3) 在自己的項目myLibgdx,添加完開發包jar和源碼包jar後,其效果如下:
三、 簡單樣本
1) 建立Activity
在自己項目myLibgdx中, 建立一個MainActivity,繼承於libgdx父類 AndroidApplication
public class MainActivity extends AndroidApplication {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initialize(new MyGame(), false);}}
2) 自訂 MyGame
上面 MainActivity 的 initialize() 中,使用了自訂的 MyGame 類,其實現 libgdx 父類介面 ApplicationListener , 詳細定義如下:
public class MyGame implements ApplicationListener {private SpriteBatch batch;// 初始化遊戲精靈private BitmapFont bf;// 初始化字型繪製@Overridepublic void create() {// 建立batch = new SpriteBatch();bf = new BitmapFont();bf.setColor(Color.RED);bf.setScale(1.0f);}@Overridepublic void render() {// 渲染Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);Gdx.gl.glClearColor(0, 0, 0, 0);batch.begin();bf.draw(batch, "hello libgdx", Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);batch.end();}@Overridepublic void resize(int arg0, int arg1) {// 布局調整}@Overridepublic void pause() {// 暫停}@Overridepublic void resume() {// 恢複}@Overridepublic void dispose() {// 銷毀bf.dispose();batch.dispose();}}
運行結果:
源碼下載
四、 libgdx生命週期
通過上面的簡單樣本,libgdx 運行流程已全部展示出來了,具體流程如下:
1) 主MainActivity,繼承於libgdx父類 AndroidApplication, 而 AndroidApplication 又繼承Android 基本的Activity並實現了libgdx自訂的介面類 Application, 關係如下:
public class AndroidApplication extends Activity implements Application
2) 自訂 MyGame,實現 libgdx 父類介面 ApplicationListener, 而ApplicationListener 介面如下:
public class MyGame implements ApplicationListener { public void create () { } public void resize (int width, int height) { } public void render () { } public void pause () { } public void resume () { } public void dispose () { }}
邏輯流程如下:
邏輯流程的功能描述:
方法名 |
功能描述 |
create() |
應用建立時,被調用且只調用一次 |
resize(int width, int height) |
遊戲螢幕每次重設大小且不在暫停狀態時調用此方法,在create()後僅調用一次,參數是螢幕被重設後的新寬度和高度(像素) |
render() |
每次渲染髮生時,遊戲迴圈調用此方法。遊戲邏輯更新常在此方法中,即迴圈重新整理繪製遊戲的邏輯畫面 |
pause() |
在android中當Home鍵按下或重新進入程式時調用,這是一個儲存遊戲狀態的好時刻,resume()不一定會被調用 |
resume() |
這個方法僅在android中調用,當應用從pause狀態重新擷取焦點時resume |
dispose() |
當應用銷毀destroyed時,調用此方法,在pause()之後 |
libgdx 應用開發的邏輯流程圖:
五、 總結
從上文的樣本和流程圖可以看出,libgdx 遊戲開發步驟如下:
1) AndriodApplication,繼承自Android 的基類 Activity, 起到了一個Activity的作用,但是我們並不在這個“Activity”中做太多的工作,當然可以做一些儲存Context上下文之類的工作,如 onSaveInstanceState(), onRestoreInstanceState()等
2) libgdx開發中實際的顯示工作,是交給一個實現了ApplicationListener介面的類來完成,它有所需要的所有功能:建立,渲染(重新整理),暫停,恢複,銷毀等。所以實際的情況是,我們在遊戲中的大部分繪圖工作都是放在這個頁面進行的
參考推薦:
libgdx 概述
The Life-Cycle(libgdx wiki)
libgdx遊戲引擎教程 ApplicationListener
android遊戲開發架構libgdx 開發架構總觀