構建J2ME游戲:用TiledLayer構造背景
在這一節(jié)中,我們要使用TiledLayer類為游戲添加一個背景。游戲界面分為三個區(qū)域:頂部表示天空,couple小精靈所在的中部是地面,底部是大海。每個區(qū)域分別使用一個32*32像素的不同顏色圖片進行填充,填充的工作由TiledLayer類完成。
首先將屏幕分成32*32的小方格,行和列的索引都從0開始,如圖4。

?????????? 圖 4. 均勻分割屏幕
(0,0)到(1,4)的方格表示天空,(2,0)到(2,4)表示地面,(3,0)到(4,4)表示海面。我們用圖5中的圖片填充對應方格。

圖 5. 背景圖片
背景圖片的第一部分(32*32)表示地面,第二部分表示大海,第三部分表示天空。使用TiledLayer時,圖片的索引是從1開始的(不是0,所以地面圖像的位置是1,大海是2,天空是3)。TiledLayer類可以將圖5分割成三張圖片,然后用每張圖片填充對應的方格。在這里,我們用三個 32*32大小圖片填充5行5列的背景,部分代碼如下:
//?加載圖片
backgroundImg?=?Image.createImage("/tiledLayer1.gif");
//?創(chuàng)建TiledLayer背景
background?=?new?TiledLayer(5,?5,?backgroundImg,?32,?32);
TiledLayer構造器的前兩個參數(shù)表示背景大小,第三個是圖像,最后兩個是每個格子的長和寬。TiledLayer類將根據(jù)格子的大小切割圖像,然后放到背景的對應方格中。
最后剩下的就是設置每個方格里放置的圖像了。創(chuàng)建背景的所有代碼都在createBackground()方法里,如下所示。在MyGameCanvas 類的start()里調用這個方法,然后在buildGameScreen()方法的最后添加background.paint(g),這使得 TiledLayer實例將自己繪制到屏幕上。
//?使用TiledLayer創(chuàng)建背景
private?void?createBackground()?throws?IOException
{
????//?加載圖片
????backgroundImg?=?Image.createImage("/tiledLayer1.gif");
????//?創(chuàng)建tiledLayer背景
????background?=?new?TiledLayer(5,?5,?backgroundImg,?32,?32);
????//?布置圖像的數(shù)組
????int[]?cells?=?{
????????3,?3,?3,?3,?3,??//?天空
????????3,?3,?3,?3,?3,??//?天空
????????1,?1,?1,?1,?1,??//?地面
????????2,?2,?2,?2,?2,??//?大海
????????2,?2,?2,?2,?2???//?大海
????};
????//?設置背景
????for(int?i?=?0;?i?<?cells.length;?i++)
????{
????????int?column?=?i?%?5;
????????int?row?=?(i?-?column)?/?5;
????????background.setCell(column,?row,?cells[i]);
????}
????//?設置背景位置
????background.setPosition(GAME_ORIGIN_X,?GAME_ORIGIN_Y);
}
最終效果如圖6。

??? 圖 6. 添加了背景的游戲截屏
原文見:http://today.java.net/pub/a/today/2005/07/07/j2me3.html?page=4
版權所有 羅明