場景:地圖載入含圖片切割,速度較慢。嘗試優化:
DataInputStream 包裝 InputStream,實際只讀 byte。改直接用 InputStream,耗時 1242ms → 1065ms(省 ~200ms)。read(byte[], off, len) 讀入緩衝。結果 1154ms,反而變慢。推測 KVM 內部機制導致。結論:能用簡單流別用複雜流;理論優化必須實測驗證。測試環境:Nokia 3100 (最快 800ms+),Nokia 3300 更快。
自訂地圖檔含重複值,嘗試行程長度編碼 (RLE) 壓縮:檔案 2.23KB → 900+ bytes。但打包後 JAR 反而變大!原因:JAR 內部已壓縮 (ZIP),預壓縮檔案壓縮率反而降低。同理,某些 PNG 優化工具處理後在 JAR 中體積反增。
教訓:自行壓縮前,先觀察檔案在 JAR 中的實際壓縮體積。
StringTable),實作該介面即可存取。移植時只改介面常數。getWidth()/getHeight()、Font.stringWidth(),避免硬編碼。| 平台 | 行為 | 處理建議 |
|---|---|---|
| Nokia S40 (7210, 3100) | 單鍵佇列:按住不放時不產生新 KeyPressed;鬆開前鍵後才觸發後鍵事件 | 四方向獨立 if;緩衝按鍵狀態 |
| WTK 模擬器 | 支援多鍵同時事件 | 可用四個 if 實現斜向移動 |
| if-else 鏈 | 順序決定優先權 | 依遊戲邏輯調整檢查順序 |
screenSizeChanged 無效)