gpt4 book ai didi

Java小程序2d图形绘制两次时出现问题(黑色部分)

转载 作者:行者123 更新时间:2023-12-01 15:23:53 25 4
gpt4 key购买 nike

所以我制作了一款主机游戏,我想将其制作成 2D 游戏。到目前为止一切都很好。我的运动和其他事情都工作正常。画得很好,直到我有了这个想法。

(我的“ map ”是一个 Tile[][] )我认为在创建一个代表图层的类时,可玩的 map 将是Layer[] 和我会在彼此之上绘制图层,并可能将一些图层存储在内存中以加快绘制速度。

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

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

    for (TileLayer layer : layers)
g.drawImage(layer.getImage(), 0, 0, null);

layer.getImage() 是正确的(非常确定,仅适用于一层)。问题是,当我绘制两层时,第二层会遮蔽第一层中的所有内容。我有这样的图层绘制代码:

    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小程序,我覆盖了“paint”,我已经改变了它。我尝试使用透明图像来代表“空气”(认为这应该有效,但可能会搞砸)。尝试添加一个条件来阻止不应该绘制的情况。

我可能做了一些以错误的方式工作的东西。帮助找到正确的方法来做到这一点会很好。(或者告诉我哪里可能出错)

最佳答案

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

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

关于Java小程序2d图形绘制两次时出现问题(黑色部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10466328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com