2011年6月2日 星期四

[AndEngine]Getting Started Tutorial

要如何開始用AndEngine開發呢 ? 官方有個教學影片,照著做就沒錯了!

同樣,先開一個新專案,因為教學影片用android1.6版本,所以我也先照做。

專案創建好後,要在裡面開一個新資料夾,叫做lib。



記得要選創建新資料夾的位置。

之後,要把C:\Users\Lin\我的課業\andrngine\ andengineexamples\lib 內的andengine.jar檔丟進去。 
再來,這點很重要!!將你剛剛丟進去的andengine.jar加入倒Build Path內,這樣編譯時才會使用到他。

之後你就會發現專案裡多了一個Referenced Libraries資料夾。

因為是OpenSource的關係,你也可以打開andengine.jar 的原始碼來看。


要開始寫第一個程式嚕。
首先先繼承 BaseGameActivity,


會因為BaseGameActivity為抽象類別(Abstract),所以要實作一些抽象方法,選擇第一個。第二個是要讓這個class變為抽象類別,這就不是我們現在要做的。

會跑出你必須要完成的幾個function。

那BaseGameActivity究竟是什麼,可以讓我們當成Activity使用呢? 我們打開BaseGameActivity.class來看一下到底是怎麼回是好了!!


展開後你會發現,其實他繼承了BaseActivity,我們就繼續追朔。

果然,BaseActivity繼承了Android api 本身所提供的Activity,所以才可以利用BaseGameActivity來開一個Android的活動。

我們再回到BaseGameActivity.class,看看為什麼會有那麼多abstract function要實作。
首先要釐清一點,就是abstract類別是不能夠產生物件的,abstract類別裡的的抽象方法,也就是當abstract類別被繼承時,準備給子類別實作的,沒有實做就無法使用。
那我們就來看看
abstract方法是藏在哪裡?


找遍BaseGameActivity.class都沒看到,我想就是跟implements有關吧!!

果不其然,發現我們要實作的function就在IGameInterface裡面,
其餘不用實作的,是因為在BaseGameActivity.class時就搞定了!!

說道Interface跟Abstract,其實兩個有點像,但是在JAVA內,不允許多重繼承,但允許可以實作多個Interface,詳細的內容,在相關資料內,我有放入兩篇教學。



我們先來摳SpriteExample的範例來跑跑看。複製主程式的部分過去!

把錯誤的部分都修正,都只需要import class,Camera的部分要特別選AndEngine提供的class。其餘的都只有一種可選。 


都沒有錯誤後,要把用到的圖給匯入,在assets的資料夾裡面開一個fgx的資料夾,放入圖片。
assets裡面的檔案,不會在R.java產生關聯檔,要研究看看是怎麼用裡面的圖的!!

還需要在androidmanifest.xml裡面多加一行。
Constant Value: "android.permission.WAKE_LOCK"
Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming
允許利用PowerManager(電源管理)的WakeLocks去阻止處理器不要睡眠或是螢幕調暗。
目前這說法先保留,有另外一種說法是
考慮到持續雙線程運行電量消耗較大的緣故,AndEngine預設情況下要求用戶啟動PowerManager進行電源管理。


官方所有user-permission文件:

大功告成嚕!可以跑了~

成功!!!




參考資料:

1 則留言:

  1. 建立assets/fgx 打錯嚕 是gfx
    很詳細的教學 謝謝~

    回覆刪除