J2ME雙緩衝問題

來源:互聯網
上載者:User

雙緩衝主要是用來解決螢幕閃爍以及繪圖效率的問題,這裡介紹下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的少數機型,所以遇到特殊問題時,可以考慮去掉自己設定的雙緩衝看看,反正手機硬體已經支援了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.