PNG 是 J2ME 遊戲與應用最主流的圖片格式。圖片資源大小、儲存方式直接影響 JAR 體積與執行時記憶體消耗,關鍵影響裝置相容性與效能。
將所有資源打包成單一大型 PNG,執行時切割繪製。優點:減少檔案數、提升壓縮率。缺點:載入大圖佔用大量記憶體,若僅需部分資源(如選單)卻強制載入全圖,極易導致 OutOfMemoryError。
依遊戲場景分割資源群:
menu.png:選單相關資源game.png:遊戲主場景資源rank.png:排行榜資源進入場景時載入對應圖集,離開時釋放(image = null; System.gc();),確保低記憶體裝置也能流暢運行。
針對大小一致的小圖塊(如 14x14 圖塊 21 張),自行開發資源讀取器:
.dat 檔.dat → 解析二進位 → Image.createImage(byte[], offset, length) 還原 Image實測:21 張獨立 PNG 打包後 JAR 體積較二進位包大約 10 KB。此法無需複雜切圖引擎,節省空間效果顯著。
| 策略 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
| 大圖集分組 | 擁有成熟引擎、資源量大專案 | 壓縮率最高、繪製效率佳 | 需複雜引擎、記憶體峰值高 |
| 二進位資源包 | 中小型專案、無專屬引擎 | 實作簡單、無引擎依賴、省空間 | 需自行開發打包/解析工具 |
未來將持續分享專案實戰經驗,敬請期待。