双缓冲主要是用来解决屏幕闪烁以及绘图效率的问题,这里介绍下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(); }//将bufferImage的Graphics对象赋给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的少数机型,所以遇到特殊问题时,可以考虑去掉自己设置的双缓冲看看,反正手机硬件已经支持了。