抱歉,如果我的标题措辞奇怪。我想不出另一种方式。这是我的代码,然后我会尝试解释我的问题。
Image dbImage;
public static Graphics dbg;
public boolean hasDone = true;
@Override
public void paint(Graphics g) {
int xDrawPos = 0;
int yDrawPos = 32;
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, xPos, yPos, 364, 488, null);
if(hasDone) {
for(int i = 0; i < 25; i ++) {
for(int x = 0; x < 25; x ++) {
g.drawImage(map.getSpritesheet().grabSprite(0, 0, 16, 16), xDrawPos, yDrawPos, 128, 128, null);
xDrawPos = xDrawPos + 128;
}
yDrawPos = yDrawPos + 128;
System.out.println(yDrawPos);
}
hasDone = true;
}
}
这是我的绘画方法。我正在尝试制作2D游戏。此方法调用paintComponent调用repaint(),因此它是一个无限循环。这就是问题:dbImage是我的玩家,需要在移动时不断重新绘制。但是,我也试图在这两个for循环中绘制一个tilemap,但不断重新绘制所有的tile会导致巨大的延迟。我尝试使用布尔值只绘制一次,但随后在下一次重绘()中擦除它们。我需要以某种方式绘制我的瓷砖一次,仍然能够更新我的播放器,但我无法弄明白。
非常感谢任何帮助。