作者長期從事日本手機遊戲移植至中國市場(含漢化、跨平台適配),分享以 WTK+JDK 為基礎開發環境下的核心移植技術與避坑指南。
getWidth()/getHeight()不同廠商功能鍵碼差異極大(如 Nokia 左/右軟鍵 -6/-7,Moto C650 為 -21/-22)。解決方案:
KeyMapper 工具類,依裝置屬性(System.getProperty("microedition.platform"))動態載入對應表getGameAction(keyCode) 對應 Canvas.UP/DOWN/LEFT/RIGHT/FIREcom.nokia.mid.ui.FullCanvas.SOFTKEY1/2 統一軟鍵處理null,輔助 GC 回收String 操作,使用 StringBufferdrawString() 多次呼叫成本高,改用字串陣列或預渲染圖片System.gc()(關鍵節點:關卡切換、大圖載入後)Canvas/GameCanvas 的主遊戲類,分析 paint()、run()、建構子、匯入套件repaint()/serviceRepaints() 在 Nokia S60 表現異常「代碼不是你寫的,看不懂很正常。先跑通流程,再局部修改。遇到棘手問題,從記憶體與圖片資源切入,九成是資源釋放或尺寸問題。」