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的少数机型,所以遇到特殊问题时,可以考虑去掉自己设置的双缓冲看看,反正手机硬件已经支持了。

 
posted @ 2006-12-12 18:45  MXi4oyu  阅读(105)  评论(0编辑  收藏  举报