我正在为一个(基于awt的)java游戏开发在线Kilobolt教程,并且有一个与double buffering和update()/ paint()函数相关的问题。我不明白为什么在一种情况下图像会闪烁,而在另一种情况下则不然。 "闪烁"情况下:
// ... in init() somewhere: offscreen_gfx = offscreen_img.getGraphics();
// ...
// only paint() method overridden
public void paint(Graphics g) {
offscreen_gfx.drawImage( robot, 100, 100, this);
g.drawImage( offscreen_img, 0, 0, this);
}
"非闪烁"情况下:
// only update() method overridden
public void update(Graphics g) {
offscreen_gfx.drawImage( robot, 100, 100, this);
g.drawImage( offscreen_img, 0, 0, this);
}
在我看来,代码基本相同,只要默认update()简单(?)调用paint()。为什么会有区别?