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