我正在尝试使用一个drawImage的2D数组为RPG制作平铺背景。但由于某种原因,Java会自动将背景与玩家重叠,我尝试在背景之前绘制播放器,但没有区别,代码:
地图代码:
Tiles[][] t;
public Map()
{
t = new Tiles[640 / 32][480 / 32];
for (int x = 0; x < 640 / 32; x++)
{
for (int y = 0; y < 480 / 32; y++)
{
t[x][y] = new Tiles(x, y, 32, 32, "./res/grass.png");
}
}
}
public void paint(Graphics g)
{
super.paint(g);
for (int x = 0; x < 640 / 32; x++)
{
for (int y = 0; y < 480 / 32; y++)
{
t[x][y].paint(g);
}
}
this.repaint();
}
绘制代码(在其他扩展JPanel的类中):
public void paint(Graphics g)
{
super.paint(g);
p.paint(g);
m.paint(g);
this.repaint();
}
注意:上面代码所在的类扩展了JPanel,所以我创建了另一个名为Window的类,它将它添加到JFrame,然后在静态void main中,我做了所有的初始化。
答案 0 :(得分:0)
如果没有完整的代码,很难说出你的错误。我可以指出一些事情,但
您的Map
似乎也是JPanel
,因为您正在呼叫super.paint
。您不需要Map
JPanel
只需使用drawTiles
方法将Graphics
上下文传递给常规模型类。
不要从组件类中显式调用paint
方法。
请勿在{{1}}方法内拨打repaint()
。
覆盖paint
代替paintComponent
这是我提出的一个例子,在修复上述
时使用了一些代码原则JPanel