天天看點

libgdx遊戲引擎開發筆記(三)Libgdx的遊戲元件部分

今天,再次總結一下,讓我們更加清楚的了解到libgdx這款遊戲引擎的架構。

1.Libgdx中遊戲元件使用的簡單關系說明:

      元件

             介紹

AndroidApplication

Activity的子類,隻有啟動類繼承了AndroidApplication并執行才能啟動Libgdx類庫

ApplicationListener

僅可在初始化時注入ApplicationListener,此後除非替換Activity否則無法切換ApplicationListener

Game

是ApplicationListener的libgdx抽象實作,其中Screen可切換

Screen

基本函數與ApplicationListener近乎一緻,唯一差别在于可以通過Game類用setScreen函數進行切換,如不使用Game類則可無視它的存在

Stage

遊戲場景用類,用以管理添加其中的具體Actor,管理Actor的手段在于内置的Group類

Actor

遊戲用演員或者說角色,與Action類組合使用時可以産生不同種類的“動畫行為”,Action部分的具體實作基本與Cocos2D一緻

Group

本身為Actor的具體實作,能夠處理注入其中的Actor,也能以遞歸方式管理注入其中的其它Group

Image、Button、Label等

細分Actor的具體實作,以重載方式響應事件,除Group外互相間不能組合疊加,事件能否傳遞取決于上級元件是否設定了相關監聽

   我們再來張圖關系就更順了!嘿嘿!

<a target="_blank" href="http://blog.51cto.com/attachment/201307/104237341.jpg"></a>

2.注意事項

   1、Libgdx使用笛卡爾坐标系(初始坐标為左下0,0),而JavaSE、JavaME以及标準Android系統(還有LGame引擎)使用的是螢幕坐标系(初始坐标為左上0,0),程式員在使用時必須厘清差别,以免不知道如何定位(通常笛卡爾系Y軸由下向上延伸,螢幕系Y軸由上向下延伸)。

    2、在Android環境使用Libgdx的Gdx.files.internal方法時(即FileHandle類以FileType.Internal模式工作),要讀取的檔案必須置于Assets檔案夾下才能讀取,在Linux、Mac、Windows環境下則可以置于除jar内部外的任何可讀取位置。

    3、Libgdx以native方式自帶圖像解碼器,通過其提供的Pixmap可以對指定圖像進行像素級渲染操作,進而不依賴Android的Bitmap加載處理圖像,不過目前隻支援png、jpg、bmp三種圖檔格式。

    4、Libgdx要求在遊戲中使用的圖檔寬與高皆為2的整數次幂,否則會産生一個Gdx異常并禁止加載行為(texture width and height must be powers of two)。

    5、Libgdx以ApplicationListener作為遊戲的基礎界面容器,但Libgdx并沒有提供可以直接切換ApplicationListener的函數。目前最新版本的Libgdx中提供了Game類(ApplicationListener子類,本身為抽象類)和一個供Game類調用的Screen類用以解決此問題。具體的Libgdx切換遊戲畫面方法是,先用繼承Game類的遊戲窗體進行initialize讓基礎畫面顯示,再讓具體的細分遊戲子產品繼承Screen類進行不同遊戲畫面的具體繪圖,而後Game類通過setScreen方法進行畫面切換。

    6、Libgdx的圖像加載處理(以及部分渲染),音頻播放和自帶的Box2D封裝皆通過JNI方式實作,是以必須在libs檔案夾下添加armeabi(或高版本Android系統支援的armeabi-v7a)檔案夾以及相關so檔案Android版Libgdx才能正常運作。

   ok!就這些了啦,本人剛開始接觸遊戲引擎,有什麼不對的地方,謝謝指正!

參考部落格:http://blog.csdn.net/cping1982/article/details/6176191

<b>     本文轉自zhf651555765 51CTO部落格,原文連結:http://blog.51cto.com/smallwoniu/1255187</b><b>,如需轉載請自行聯系原作者</b>