要如何開始用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文件:
大陸user-permission翻譯文件:http://android.tgbus.com/Android/tutorial/201103/346178.shtml
大功告成嚕!可以跑了~
成功!!!
參考資料:
「抽象類別」(Abstract class)http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/AbstractClass.htm
建立assets/fgx 打錯嚕 是gfx
回覆刪除很詳細的教學 謝謝~