雙緩沖主要是用來解決屏幕閃爍以及繪圖效率的問題,這裡介紹下MIDP裡面使用方法。
1、有一個函數可以判斷設備是否實現了雙緩沖:isDoubleBuffered(),如果返回true,表示設備自身實現了雙緩沖,理論上說我們就不用再自己設置了。不過為了安全第一,大家普遍認同的做法是,不管設備有沒有實現,我們都自己設置一個,反正多做沒有壞處。
2、自己實現雙緩沖代碼如下:
// initialize:
Image bufferImage = null;
bufferImage=Image.createImage(scrW,scrH);
//in paint:
public void paint(Graphics g){
//雙緩沖處理
Graphics old=null; //檢查圖片是否已經改變
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的少數機型,所以遇到特殊問題時,可以考慮去掉自己設置的雙緩沖看看,反正手機硬件已經支持了。