J2ME双缓冲问题

双缓冲主要是用来解决屏幕闪烁以及绘图效率的问题,这里介绍下MIDP里面使用方法。

1、有一个函数可以判断设备是否实现了双缓冲:isDoubleBuffered(),如果返回true,表示设备自身实现了双缓冲,理论上说我们就不用再自己设置了。不过为了安全第一,大家普遍认同的做法是,不管设备有没有实现,我们都自己设置一个,反正多做没有坏处。

2、自己实现双缓冲代码如下:

// initialize

       Image bufferImage = null;

       bufferImage=Image.createImage(scrW,scrH);

//in paint

public void paint(Graphics g){

//双缓冲处理 

       Graphics old=g; //检查图片是否已经改变

       if(bufferImage!=null){ g=bufferImage.getGraphics(); }//bufferImageGraphics对象赋给g

      

g.setColor(0x0); //设置背景色黑色

g.fillRect(0,0,scrW,scrH);//清除当前画面,准备绘制新画面

g.setColor(0xFFFFFF); //设置颜色为白色

g.drawString("Test double buffer",10,50,0);

 

if(g!=old){ //要是图片已经发生改变则将缓冲区图片一次性画到屏幕上去

       old.drawImage(bufferImage,0,0,Graphics.LEFT|Graphics.TOP);

}

}

3、注意:某些BT的机器可能自己设置双缓冲会出问题,比如速度慢。

目前已发现的有SoftBank 3GC的少数机型,所以遇到特殊问题时,可以考虑去掉自己设置的双缓冲看看,反正手机硬件已经支持了。

 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值