針對 J2ME (MIDP) 遊戲在不同手機平台移植的痛點,提出四大策略:
1. 自適應螢幕尺寸
- 將螢幕寬高作為變數參與 UI 元件 (選單、進度條、列表) 尺寸計算。
- 繪圖採用「線條繪製 + 圖片平鋪」混合,尺寸改變時只需調整平鋪次數。
- 單一
Widget 類以參數區分元件類型,減少類別數量。
2. 封裝 API 差異
- 針對廠商專屬 API (Nokia UI) 與標準 API (MIDP 2.0) 定義統一介面。
- 例:
createSubImg(Image, rect) — Nokia 版用 DirectUtils,MIDP 2.0 版用 Image.createImage。
- 遊戲邏輯只呼叫統一介面,移植時只需替換實作類。
3. 虛擬按鍵映射
- 定義位元組虛擬鍵碼 (如
1<<0 為左鍵),keyPressed/keyReleased 更新位元狀態。
- 各機型提供
mapKeyCode(int keyCode) 將實體鍵碼轉為虛擬鍵碼。
- 支援遊戲內自訂按鍵設定。
4. 核心庫三層封裝
- GameFramework:遊戲迴圈、渲染、按鍵處理、工具方法。
- GraphicsManager:圖片載入、切割、旋轉、動畫 (類 Sprite)。
- WidgetKit:所有 UI 控件。
- 移植新機型只需調整這三個類,其餘邏輯完全不動。
輔助工具:開發「所見即所得」動畫編輯器生成圖片中繼資料,進一步降低移植成本。
核心精神:將差異隔離、介面統一、邏輯共用,貫徹 Java「一次編寫、到處執行」的承諾。