【发布时间】:2011-03-20 22:26:10
【问题描述】:
我正在用 Java 编写一个非常简单的游戏,当我在浏览器中将游戏作为小程序玩时,我遇到了非常严重的闪烁问题。也就是说,在背景上绘制的所有精灵有时会显示在屏幕上,但通常不会显示 - 它们重复地在屏幕上闪烁然后消失。我已经读过双缓冲可能是解决这个问题的方法,但我无法正确实现它。
我使用 JApplet 作为 JPanel 的容器。这个 JPanel 是在其上绘制精灵和游戏对象的容器——也就是说,在 JPanel 的 paintComonent 方法中。在我的 JApplet 中,我使用 init、paint 和 update 覆盖方法,如下所示:
Image offscreen;
Graphics bufferGraphics;
Dimension dim;
public void init(){
dim = getSize();
setBackground(Color.BLACK);
offscreen = createImage(dim.width,dim.height);
bufferGraphics = offscreen.getGraphics();
}
public void paint(Graphics g){
bufferGraphics.clearRect(0,0,dim.width,dim.height);
//here is my question - i"m not sure what I should print to bufferGraphics
g.drawImage(offscreen, 0, 0, this);
}
public void update(Graphics g){
paint(g);
}
我遇到的问题是,在注释行中,我不确定如何将当前的小程序图像打印到 bufferGraphics。我阅读了example,其中精灵直接绘制到 JApplet,而不使用 JPanel。鉴于此,我的猜测是我需要在注释行将 JPanel 绘制到 bufferGraphics 上。我在正确的轨道上吗?任何帮助是极大的赞赏;我只是想知道如何正确地做到这一点。
【问题讨论】:
-
重新格式化的代码,如果不正确则恢复。