两次绘图时的Java小程序2d图形绘图问题(黑色零件)

两次绘图时的Java小程序2d图形绘图问题(黑色零件),java,applet,drawing,2d,Java,Applet,Drawing,2d,所以我做了一个控制台游戏,我想把它做成2d。 到目前为止一切都很好。 我的动作和其他方面都很好。 画得很好,直到我有了这个想法 (我的“地图”是一个平铺[]) 我认为在创建一个表示层的类时,一个可播放的贴图将是一个 Layer[]和我会在每个层上绘制,可能会在内存中存储一些,以便更快地绘制 我认为这是一个“好”或“好”的主意。(如果有人能告诉我这是不是一个好主意,我将不胜感激) 问题是当我使用两层时,第二层总是弄乱第一层。 我用于绘制“地图”的代码如下所示: for (TileLayer

所以我做了一个控制台游戏,我想把它做成2d。 到目前为止一切都很好。 我的动作和其他方面都很好。 画得很好,直到我有了这个想法

(我的“地图”是一个平铺[]) 我认为在创建一个表示层的类时,一个可播放的贴图将是一个 Layer[]和我会在每个层上绘制,可能会在内存中存储一些,以便更快地绘制

我认为这是一个“好”或“好”的主意。(如果有人能告诉我这是不是一个好主意,我将不胜感激)

问题是当我使用两层时,第二层总是弄乱第一层。 我用于绘制“地图”的代码如下所示:

    for (TileLayer layer : layers)
        g.drawImage(layer.getImage(), 0, 0, null);
    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);
        }
    }
getImage()层是正确的(非常确定,只适用于一个层)。 问题是当我画两个图层时,第二个图层会将第一个图层中的所有内容都涂黑。 我的图层绘制代码如下:

    for (TileLayer layer : layers)
        g.drawImage(layer.getImage(), 0, 0, null);
    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);
        }
    }
BufferedImage img=新的BufferedImage(tiles.length*Tile.Tile\u SIZE,
瓷砖[0]。长度*瓷砖。瓷砖大小,
颜色空间。类型_RGB);
对于(int x=0;x
这是一个java小程序,我覆盖了“画图”,我已经改变了它。 我试着用一个透明的图像来表示“空气”(我想这可能会把它搞糟)。 尝试添加一个条件以防止在不应该的情况下绘制

我可能做了一些错误的事情。 帮助你找到一个合适的方法来做这件事会很好。
(或者告诉我哪里可能有错误)

在示例中,您似乎使用了错误的常量作为BuffereImage类型

如果希望BuffereImage允许透明,请将最后一个参数设置为BuffereImage.TYPE_INT_ARGB(或BuffereImage上最后一位有“A”的类型常量之一)