天天看點

libgdx遊戲引擎開發筆記(一)引擎介紹和Helloworld

   做Android快一年了,項目也做了四五個,感覺沒什麼動力向前,思緒整理了一段時間,決定轉入Android遊戲開發,同時發現了一款強大的遊戲引擎libgdx,在此邊學邊整理,好記性不如爛筆頭嘛!

1.libgdx簡介

    libgdx是一個跨平台的2D/3D的遊戲開發架構,它由Java/C/C++語言編寫而成。ibgdx相容大多數微機平台(标準JavaSE實作,能運作在Mac、Linux、Windows等系統,最近加入了對html5的支援)與Android平台(Android1.5以上即可使用,Android2.1以上可滿功率發揮)。Libgdx以native方式自帶圖像解碼器,通過其提供的Pixmap可以對指定圖像進行像素級渲染操作,進而不依賴Android的Bitmap加載處理圖像,可以支援png、jpg、bmp,最近的兩個版本中加入了對gif圖檔的支援(如果要做大量動畫的話,gif圖檔可以保證在圖檔品質降低不了太多的情況下成倍地縮小,這點大家都懂的)。

   Libgdx由audio、files、graphics、math、physics、scenes、utils這些主要類庫所組成,它們分别對應了Libgdx中的音頻操作,檔案讀取,2D/3D渲染,Libgdx繪圖相關運算,Box2D封裝,2D/3D遊戲元件(3D部分目前無元件),以及Libgdx内置工具類。

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

  至于環境搭建,在此不再贅述,網上一大堆的哦! 大家可以去http://code.google.com/p/libgdx/下載下傳最新的libgdx ,本文使用的libgdx是0.98版本

2.主要類的介紹

   2.1ApplicationListener

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>public</code> <code>class</code> <code>MyGame </code><code>implements</code> <code>ApplicationListener {</code>

<code>        </code><code>public</code> <code>void</code> <code>create () {</code>

<code>                </code><code>// STUB</code>

<code>        </code><code>}</code>

<code>        </code><code>public</code> <code>void</code> <code>render () {</code>

<code>        </code><code>public</code> <code>void</code> <code>resize (</code><code>int</code> <code>width, </code><code>int</code> <code>height) {</code>

<code>        </code><code>public</code> <code>void</code> <code>pause () {</code>

<code>        </code><code>public</code> <code>void</code> <code>resume () {</code>

<code>        </code><code>public</code> <code>void</code> <code>dispose () {</code>

<code>}</code>

    ApplicationListener是一個接口,實作了這個接口的類都有一個共同的特點,它們都會經曆一個建立,渲染(render),暫停,繼續,銷毀等一系列過程,發生對應時間的時候會自用調用相應的函數。特别是render()函數,它是一個系統在不停調用的函數(當然這個執行個體滿足正在運作的條件),是以我們可以把很多操作放在render()函數中實作,不過千萬注意不要進行耗時的操作以免堵塞UI線程。

 生命周期:

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

   主要方法:

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

   2.2AndroidApplication

<code>public</code>  <code>class</code> <code>LibgdxActivity </code><code>extends</code>  <code>AndroidApplication {</code>

<code>    </code><code>@Override</code>

<code>    </code><code>public</code> <code>void</code> <code>onCreate(Bundle savedInstanceState) {</code>

<code>        </code><code>super</code><code>.onCreate(savedInstanceState);</code>

<code>        </code><code>initialize(</code><code>new</code> <code>MyGame(), </code><code>false</code><code>);</code>

<code>    </code><code>}</code>

AndroidApplication繼承自API中的Activity,是以我們使用它也需要在Manifest中注冊,至于initialize(new  MyGame (), false);第一個參數是一個實作了ApplicationApplication接口的類的執行個體,第二個參數如果設為true,則在opengl 2.0可用的情況下會使用opengl 2.0。

這樣,我們的第一個libgdx的HelloWord就成功了,僅僅是個黑屏。。。

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