个人经验,写下来会加深自己的记忆,同时看看自己的日志还可以复习一下,也和大家一起分享!
大家都知道,Java SE不比Java ME.ME中已经内置使用了双缓冲的机制(部分老式手机不支持),而Java SE中的双缓冲机制则要自己来实现。做过Java桌面游戏的人可能会发现,如果不用双缓冲,在很多时候会出现白色画面一闪而过,这就是因为图像正在绘制而没绘制完,却提前显示在窗口内造成的。解决这种情况就需要使用双缓冲机制。
双缓冲机制的原理在下面的代码中已经有详细的解析,具体实现如下:
Image offScreenImage = null;
上面的语句在变量声明部分给出。
在函数调用过程中,写出update方法:
// 双缓冲机制的具体实现
public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(Commens.WINDOW_WITH,
Commens.WINDOW_HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();// 获取图片内的所有图形,形成虚拟窗口
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.GREEN);// 设置屏幕窗口的颜色
gOffScreen.fillRect(0, 0, Commens.WINDOW_WITH, Commens.WINDOW_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen); // 把虚拟窗口画在图片上
g.drawImage(offScreenImage, 0, 0, null);// 把图片画在窗口上
}
这样在绘制时,显示绘制到缓冲区,再显示出来,就不会出现"闪屏"的情况了