Java双缓冲机制--如何消除坦克大战中景物的闪烁和白条

   个人经验,写下来会加深自己的记忆,同时看看自己的日志还可以复习一下,也和大家一起分享!

 

            大家都知道,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);// 把图片画在窗口上
 }

   这样在绘制时,显示绘制到缓冲区,再显示出来,就不会出现"闪屏"的情况了 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值