所以我制作了一个控制台游戏,我想它是2d。 到目前为止一切都很好。 我有运动和其他工作正常。 绘图很好,直到我有了这个想法。
(我的“地图”是Tile [] []) 我想在创建一个代表一个图层的类时,一个可玩的地图就是一个 Layer []和我会在彼此之间绘制图层,并可能将一些图层存储在内存中以便更快地绘制。
我认为这是一个“好”/“好”的想法。(如果有人会告诉我这是不是一个好主意,我将不胜感激)
问题是当我使用2层时,第二层总是混淆第一层。 我用来绘制'地图'的代码如下所示:
for (TileLayer layer : layers)
g.drawImage(layer.getImage(), 0, 0, null);
layer.getImage()是正确的(非常确定,只适用于一个图层)。 问题是,当我绘制2层时,第二层将第一层中的所有内容涂黑。 我有这样的图层绘制代码:
BufferedImage img = new BufferedImage(tiles.length * Tile.TILE_SIZE,
tiles[0].length*Tile.TILE_SIZE,
ColorSpace.TYPE_RGB);
for (int x = 0; x < tiles.length; x++) {
for (int y = 0; y < tiles[0].length; y++) {
//System.out.println("ID:" + tiles[x][y].getId());
img.getGraphics().drawImage(tiles[x][y].getImage(),
x * Tile.TILE_SIZE,
y * Tile.TILE_SIZE,
null);
}
}
它是一个java applet我压倒'paint',我已经改变了。 我尝试使用透明图像来表示“空气”(认为这应该可以解决它)。 尝试添加一个条件,以防止不应该绘制。
我可能做了一些错误的方法。 帮助正确的方法来做到这一点会很好。 (或者告诉我哪里可能有错)
答案 0 :(得分:1)
在该示例中,您似乎使用了错误的常量作为BufferedImage类型。
如果您希望BufferedImage允许透明,请将最后一个参数设置为BufferedImage.TYPE_INT_ARGB(或BufferedImage中最后一位有“A”的类型常量之一)。