遊戲開發常將多張小圖合併為一張大圖(圖集),執行時透過 setClip 截取所需區域,或預先分割成小圖物件。
private Image[] imgNumbers = new Image[10];
private void initImgNumbers() throws Exception {
Image imgTotal = Image.createImage("/numbers.png"); // 含 0-9 數字的大圖
Graphics g;
for (int i = 0; i < 10; i++) {
imgNumbers[i] = Image.createImage(10, 15); // 每個數字 10x15
g = imgNumbers[i].getGraphics();
g.drawImage(imgTotal, -i * 10, 0, Graphics.TOP | Graphics.LEFT);
}
}
MIDP 1.0 透明像素遺失問題:上述做法在 MIDP 1.0 會遺失透明通道。解決方案:
setClip 繪製大圖區域,不分割。DirectUtils.createImage(w, h, 0) 建立支援透明的可變動圖片。