2011年3月10日 星期四

Android - AndEngine的基礎事件

ANndEngine中的事件並不複雜,再繼承了BaseGameActivity之後,因為BaseGameActivity有實作了IGameInterface,所以可以用的事件如下:

public Engine onLoadEngine();
public void onLoadResources();
public void onUnloadResources();
public Scene onLoadScene();
public void onLoadComplete();
public void onGamePaused();
public void onGameResumed();

這些事件的用意也可以很容易的從method的命名看出來。
但是切記,只能Override這些事件,Android的基礎事件,例如:onCreate(),onStop()...等等,完全禁止使用,否則輕則logcat會出現提示說明不能使用,然後當掉,重則只有exception的訊息,然後直接當掉。

2011年3月9日 星期三

Android - logcat不會顯示

有時候常常會遇到模擬器重開,但是Eclipse沒有重開的情況下,logcat的訊息不會顯示,要重開Eclipse又有點麻煩。後來我發現了一個解決方式,見下圖,對著圖中紅色框框的地方按滑鼠右鍵,訊息一下子就噴出來啦~

2011年3月8日 星期二

Android - 記憶卡相關

取得記憶卡狀態
Environment.getExternalStorageState()
狀態有以下幾種:
MEDIA_BAD_REMOVAL:不當移除。未經卸載就拔除記憶卡。
MEDIA_CHECKING:檢查中。
MEDIA_MOUNTED:已掛載,並且可讀寫。
MEDIA_MOUNTED_READ_ONLY:已掛載,但是只能讀取。
MEDIA_NOFS:未格式化或是格式無法讀取。
MEDIA_REMOVED:已移除。記憶卡槽偵測不到有記憶卡。
MEDIA_SHARED:記憶卡未掛載,使用的是usb分享的外部儲存裝置。
MEDIA_UNMOUNTABLE:有偵測到記憶卡,但是無法掛載。可能是記憶卡壞掉或是記憶卡分割區壞掉了。
MEDIA_UNMOUNTED:有偵測到記憶卡,但是尚未掛載。

取得記憶卡根路徑
Environment.getExternalStorageDirectory().getPath()

取得記憶卡容量
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());

// 未使用(單位:bytes)
long sdFreeSize = stat.getAvailableBlocks() * stat.getBlockSize();

// 總容量(包含保留空間,單位:bytes)
long sdTotalSize = stat.getFreeBlocks() * stat.getBlockSize();

// 已使用(單位:bytes)
long sdUsedSize = sdTotalSize - sdFreeSize ;

ps.1 gigabytes = 1024 megabytes = 1024*1024 kilobytes = 1024 * 1024 * 1024 bytes

Rainmeter 0.14 中文化

首先先對莫名其妙轉址進來的人說聲抱歉,最近在整理檔案的時候,想起幾年前有做過這東西,就把他翻出來看看,發現每天都有固定一些流量,這讓我留也不是,不留也不是。如果我一刪檔案,就會讓所有連結的網站跟網誌連結掛掉,為了不造成他人的困擾,所以我就保留原本的轉址 - http://tericky.idv.st,但是連結改到這裡。這就是為什麼各位會莫名其妙的轉到這邊的原因了。

程式下載點(XuiteDropBox)

一開始先放上截至 2011/03/08的流量統計。
感謝這20872的訪客使用我這不才的中文化。

下面是當初寫的使用教學。

2011年2月23日 星期三

AndEngine - Android的遊戲引擎

Android發展也有一段時間了,隨著性能越來越好的硬體被推出之後,遊戲也越來越多,但是對於一個遊戲開發的初學者來說,到底哪一套遊戲引擎比較適合呢?比較過幾套Android上的引擎之後,決定以AndEngine作為我的第一步。

這套引擎有什麼特點呢?
  1. 完全公開原始碼:作者將所有的程式碼都公開,想要了解程式的實作方式,可以自己trace程式碼。
  2. 完全免費:是的!這是一套免費的package,你不需要額外花錢買授權或是支援。
  3. 豐富的範例程式:作者針對每個可能用到的功能寫了範例,極具參考價值。
  4. 強大的功能:使用少量的程式碼,就可以做到許多複雜的動作。
  5. 無須公開自己的程式碼:雖然這套引擎的授權是採用LGPL(稍稍鬆綁的堅持 - LGPL),但是你不需要公開你的遊戲原始碼。唯一要注意的地方是,當你修改了引擎的原始碼,就必須要公開你所修改的程式碼
但是也有一些缺點:
  1. 沒有文件可以看:嗯....對於習慣有各種white book啦,developer cookbook閱讀的人來說,這套引擎完全沒有相關文件可以看,就連安裝教學都是在他的論壇中才找到的。想要了解有什麼功能,就要自己爬原始碼(編按:所以才會完全公開程式碼.....)。
  2. 2D only:這是2D的引擎,不要以為是哪裡搞錯了,怎麼都是平面的...。
  3. 需要有java或是物件導向的基礎:沒有的話,光是看他繼承來實作去的,就會搞死你的腦細胞了。
  4. 中文討論與教學較少:中文以簡體中文的討論占大多數,但是還是不足以撐起一片天,所以要有硬啃英文跟用英文在作者的論壇苦戰的心理準備。
AndEngine 首頁:http://www.andengine.org/
AndEngine 論壇:http://www.andengine.org/forums/
AndEngine 原始碼:http://code.google.com/p/andengine/
AndEngine 範例:http://code.google.com/p/andengineexamples/

這邊有一些教學的文章可以參考:

Beginner
Getting Started with AndEngine, Eclipse and a Hello World Application
Using Timer's - Sprite Spawn Example
Update Handlers - Using their power!

Medium
Updating Sprites/Objects - Using Listeners
Scrolling with Touch Events
Live Wallpaper Settings - Example by Nasc (until I have done a tutorial)

Advanced
XML Parsing within AndEngine

Other
Live Wallpaper Template
Particle Effect Sprites
2D Polygon Class for AndEngine - Perfect for Debugging without Textures!