現在的J2ME遊戲參考書都是描述MID2.0,給我們這些學習的新手帶來不少麻煩。因為例如Sprite類在遊戲開發中很常用到,可是1.0是不支援的。但換句話講2.0不過是比1.0多提供了幾個類。那我們就常試著自己在1.0中寫出這些類的方法,下面我們就來寫Sprite類的方法
Sprite(Image img,int frameWidth,int frameHeight)
先理解下這個方法的意思,是從大圖上依次讀取frameWidth*frameHeight大小的圖片存入預設數組。
以序號0開頭標記。
我們試圖建立Image.createImage(frameWidth,frameHeight)地區。然後將對應序列的圖描繪,最後儲存到相應的數組。
下面是我的Sprte方法
private Image[] sprite;//類變數儲存圖片
public void Sprite(Image img,int frameWidth,int frameHeight)
{
int m=img.getWidth()/frameWidth; / /確定數組大小
int n=img.getHeight()/frameHeight;
int k=m*n; //數組大小
sprite=new Image[k];//初始化要儲存的數組
Image a=Image.createImage(frameWidth,frameHeight);//建立描繪地區,在雙緩衝時常見
Graphics g=a.getGraphics();
for(int i=0;i<k;i++){
g.drawImage(img,-(i/m)*frameWidth,-(i%m)*frameHeight,0);//0是錨點,左上的意思
/*新手比較難理解img,-(i/m)*frameWidth,-(i%m)*frameHeight,0
我們這裡確定m,n 來看圖
0, 1 , 2, 3, 4
5, 6, 7, 8, 9
10,11 ,12,13,14
m=5,n=3,圖示為對應序號。k=5*3=15,那麼將它對應二維數組。[0][0]對應0,
[1][1]對應6,那麼[i/m][i%n]對應i ,之後不用我解釋了吧。 */
sprite[i]=Image.createImage(a);//將所選地區存入數組
}
}