基於Nokia手機的移動遊戲開發步步通(二)

 3 遊戲外殼和遊戲動作

  Nokia新型號手機支持的遊戲外殼可能會影響遊戲動作。Nokia第一款可以使用遊戲外殼的手機是Nokia 3510i。如果手機支持遊戲外殼,設備的遊戲菜單中會有一個設置對話框,允許用戶設置遊戲外殼上的按鍵對應的遊戲動作。用戶必須設置這個按鍵映射,否則設計使用普通鍵盤佈局的遊戲就不能運行。


 4 同時按鍵

  許多Nokia手機(例如,諾基亞6310i、3410、7210)不支持同時按下多鍵(也就是說,如果你按住Up鍵,那麼MIDlet就不會知道你是否你按下Fire鍵)。雖然Nokia 7650支持同時按下多鍵(例如同時按住"1"和"3"鍵),但是操縱桿鍵物理上是無法同時又向左按又向上按的,所以在遊戲中不可能有斜向的運動,並且在它被向上、向下、向左或者向右按下的時候是不能記錄一個"點擊"的。

  5 鍵名:避免硬編碼你自己的文本字符串

  避免把硬編碼文本和你的MIDlet中的鍵盤代碼相關聯。Canvas類提供了一個返回每個鍵盤代碼關聯的文本名稱的方法:

public static String getKeyName(int keyCode);

  現在的Nokia設備的問題是這個方法始終返回一個英語字符串,而不是根據用戶的語言選擇。在未來的Nokia設備中,這個字符串可能會基於用戶的語言選擇。如果你的目的是開發可移植的遊戲,那麼必須記住getKeyName在不同的Nokia MIDP設備中返回不同的值。

  6 使用全屏畫布(FullCanvas)功能鍵

  一個基於全屏畫布(FullCanvas)遊戲屏幕的功能鍵只能用於從遊戲屏幕退出到不同的屏幕狀態。帶有FullCanvas類的Nokia用戶界面應用編程接口明確地提供一個全屏圖形區域用於繪圖,可用於許多類型的遊戲。

  繼承於Nokia用戶界面應用編程接口類FullCanvas的遊戲屏幕將不會把功能鍵的鍵盤代碼(即KEY_SOFTKEY1、KEY_SOFTKEY2,KEY_SOFTKEY3)用做遊戲相關的動作,除非是用於從遊戲屏幕返回到菜單中。

  如果一個MIDlet應用程序需要使用功能鍵命令,那麼你必須使用默認的MIDP Canvas類,特別是如果你的MIDlet需要使用標籤功能鍵的時候。當你使用FullCanvas的時候,你不應該提供你自己的功能鍵標籤。

  7 MIDlet國際化

  你有可能需要把你的MIDlet國際化--例如,用於不同的地區和語言。MIDP的系統屬性"microedition.locale"定義了設備的當前區域。它的值可以使用System.getProperty.方法取得。MIDP規範允許在這個系統屬性中使用一個空值。然而,在Nokia的MIDP實現中是不允許空值的。CLDC的系統屬性"microedition.encoding"定義了設備的默認字符編碼。它的值可以使用System.getProperty方法取得。
想要了解更多MIDlet本地化問題,可以參閱《Writing World Aware J2ME Applications》http://wireless.java.sun.com/midp/ttips/worldaware/ 的資源包。目前在MIDP中還沒有一個標準機制用來處理資源包。這個文檔使用一種簡單的途徑把用戶界面文本從主程序中分離出來。它在Resource 類(二、9節)中被處理。

  把國際化特色加入一個MIDlet非常重要,但是這可能會增加你的MIDlet的大小。如果MIDlet大小對於某種特定MIDP設備來說是一個問題,那麼你可能希望產生好幾個不同編譯版本的MIDlet。每個版本可以爲一個或多個區域、語言本地化。

  8 設備特性:聲音、振動和燈光

  如果你使用Nokia用戶界面應用編程接口類Sound或DeviceControl(振動、燈光),你應該提供一個Options或Settings菜單和一個設置編輯器,來允許最終用戶啓動或者取消這樣的設置。

  然而,如果你使用Nokia用戶界面應用編程接口類Sound或DeviceControl(振動、燈光)並且通過設置JAD參數<>來把你的遊戲安裝到Games菜單(見一、11節),Games菜單中已經提供的設置允許最終用戶啓動或者取消這些特性。因此應用程序沒有必要自己創建這樣一個特性。除Nokia UI API技術文檔之外,你還可以參考《Nokia UI API Programmer ' s Guide》,它能提供很多有用的信息。

  9 設備無關性

  Nokia MIDP設備可能在屏幕尺寸、鍵盤佈局和可用API等方面不同。爲了創建可移植的遊戲,在設計遊戲時,這些差異應當被考慮在內。

  應用程序應該向系統詢問屏幕的尺寸,並且避免繪製屏幕內容的時候硬編碼座標。可以使用Canvas類的getHeight和getWidth方法來達到這個目的。

  不同的Nokia MIDP設備中應用編程接口變化很大,開發者應該檢查所要開發的設備平臺上的應用編程接口。這是可以做到的,振動就是一個很好的例子。

try{
Class.forName("com.nokia.mid.ui.DeviceControl");
}
catch(ClassNotFoundException e){
//Can't use vibration because the API
//is not supported in the device
}

  使用繼承於默認MIDP Canvas類的遊戲屏幕代替廠商特定的FullCanvas類,這有助於提高你的MIDlet的可移植性;然而,那就不可能實現全屏幕了。

  10 最優化

  MIDP設備的內存非常有限,所以使用內存時應格外小心。對於遊戲來說一個很重要的限制就是有限的堆內存(heap memory):爲了節省堆內存,對象引用不再需要被設置爲"null",以便這些對象可被垃圾-收集(garbage-collected)。彩屏手機需要更多的內存來處理應用程序中的位圖,這與更大的屏幕位深度和相關的內部數據結構有關。因此,雖然一個應用程序可能編寫來使用在一個黑白屏幕的手機上,但是在彩屏手機上使用時,它可能消耗更多動態內存:就Nokia 7210來說,它顯示一幅圖片時比Nokia 6310i多用16倍的內存。
開發者應該在設計應用程序時考慮到這個因素,應該把同時加載的圖片數降到最少的程度。例如,閃動屏幕圖像應該能夠在遊戲圖形圖象創建之前被垃圾收集(通過設置所有到圖像對象的引用爲"null")。

  11 安裝

  默認情況下MIDlet被安裝到Nokia設備的Applications菜單下。如果設備有Games菜單的話,MIDlet還可以通過設置MIDlet的.jad文件中的Nokia-MIDlet-Category:Game參數來安裝到這個菜單下。
作者:wayne編譯    轉貼自:yesky.com    
發佈了98 篇原創文章 · 獲贊 2 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章