罗明的博客
... ...
讨论Eclipse, Java, Linux, Google产品
              

构建J2ME游戏:用TiledLayer构造背景

在这一节中,我们要使用TiledLayer类为游戏添加一个背景。游戏界面分为三个区域:顶部表示天空,couple小精灵所在的中部是地面,底部是大海。每个区域分别使用一个32*32像素的不同颜色图片进行填充,填充的工作由TiledLayer类完成。

首先将屏幕分成32*32的小方格,行和列的索引都从0开始,如图4。

j2me3_figure4.gif

           图 4. 均匀分割屏幕

(0,0)到(1,4)的方格表示天空,(2,0)到(2,4)表示地面,(3,0)到(4,4)表示海面。我们用图5中的图片填充对应方格。

tiledlayer1.gif

图 5. 背景图片

背景图片的第一部分(32*32)表示地面,第二部分表示大海,第三部分表示天空。使用TiledLayer时,图片的索引是从1开始的(不是0,所以地面图像的位置是1,大海是2,天空是3)。TiledLayer类可以将图5分割成三张图片,然后用每张图片填充对应的方格。在这里,我们用三个 32*32大小图片填充5行5列的背景,部分代码如下:

// 加载图片
backgroundImg = Image.createImage("/tiledLayer1.gif");

// 创建TiledLayer背景
background = new TiledLayer(55, backgroundImg, 3232);


TiledLayer构造器的前两个参数表示背景大小,第三个是图像,最后两个是每个格子的长和宽。TiledLayer类将根据格子的大小切割图像,然后放到背景的对应方格中。

最后剩下的就是设置每个方格里放置的图像了。创建背景的所有代码都在createBackground()方法里,如下所示。在MyGameCanvas 类的start()里调用这个方法,然后在buildGameScreen()方法的最后添加background.paint(g),这使得 TiledLayer实例将自己绘制到屏幕上。

// 使用TiledLayer创建背景
private void createBackground() throws IOException
{
    
// 加载图片
    backgroundImg = Image.createImage("/tiledLayer1.gif");

    
// 创建tiledLayer背景
    background = new TiledLayer(55, backgroundImg, 3232);

    
// 布置图像的数组
    int[] cells = {
        
33333,  // 天空
        33333,  // 天空
        11111,  // 地面
        22222,  // 大海
        22222   // 大海
    };

    
// 设置背景
    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。

j2me3_figure6.gif

    图 6. 添加了背景的游戏截屏

原文见:http://today.java.net/pub/a/today/2005/07/07/j2me3.html?page=4


版权所有 罗明
posted on 2005-12-16 19:58 罗明 阅读(1060) 评论(0)  编辑  收藏 所属分类: JavaJ2ME

只有注册用户登录后才能发表评论。


网站导航: