在java中构建2D地图的其他方法

时间:2014-12-22 15:07:46

标签: java swing jpanel textures paintcomponent

因为我是java的新手我想到编写一个简单的2D游戏,你可以在一个由16x16图形组成的2D世界中走动。我已经找到了一种创建纹理JPanels的方法:

public class TexturedPanel extends JPanel {
    private Image image;
    private boolean tile;

    TexturedPanel(Image image) {
        this.image = image;
        this.tile = true;
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(tile) {
            int iw = image.getWidth(this);
            int ih = image.getHeight(this);
            if (iw > 0 && ih > 0) {
                for(int x = 0; x < getWidth(); x += iw) {
                    for(int y = 0; y < getHeight(); y += ih) {
                        g.drawImage(image, x, y, iw, ih, this);
                    }
                }
            }
        } else {
            g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
        }
    }
}

现在我必须决定是否继续使用这种方法,或者我是否应该使用另一种方法......

那么有更好(更快/更简单)的方法来构建纹理化的JPanel吗?

先谢谢,Marvin

1 个答案:

答案 0 :(得分:1)

请注意,您发布的方法只会拼贴单个图像。你可能想要平铺多个图像。

执行此操作的一种方法是使用包含每个网格单元格的平铺类型的2D数组,然后使用该数组来决定在每个网格单元格中绘制哪个图像。

我建议小一点 - 您可以先根据2D阵列绘制不同颜色的矩形吗?