<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    路是爬出來的

    關于j2me game雙緩沖實現探討

          雙緩沖技術的應用很廣泛,設計游戲的時候更是需要它,

         在midp1.0中,api中并沒有game這個包,看到網上很多人在討論設計游戲的時候會出現圖片斷裂,屏幕閃爍等問題。

         我經過這幾天的學習整理下自己的學習心得,用來拋磚,希望對此有研究高手們相互討論。讓我也學習學習。

        

         雙緩沖的原理可以這樣形象的理解:把電腦屏幕看作一塊黑板。首先我們在內存環境中建立一個“虛擬“的黑板,然后在這塊黑板上繪制復雜的圖形,等圖形全部繪 制完畢的時候,再一次性的把內存中繪制好的圖形“拷貝”到另一塊黑板(屏幕)上。采取這種方法可以提高繪圖速度,極大的改善繪圖效果。

        對于手機來說。具體的過程就是通過extends Canvas。然后獲取bufferImage。再然后就getGraphics。最后就是在這個graphics中繪制圖片等,再最后就是把這個繪制好的bufferImage繪制的屏幕上。

         說歸說。具體還是要看代碼的。里面的代碼參照了一些開源的代碼。

    java 代碼


     


    1. /******************************************************************** 

    2.  * 項目名稱             :足球項目j2me客戶端         

       

    3.  *  

    4.  * Copyright 2005-2006 Teesoo. All rights reserved 

    5.  ********************************************************************/  

    6. package org.wuhua.game;  

    7.   

    8. import javax.microedition.lcdui.Canvas;  

    9. import javax.microedition.lcdui.Graphics;  

    10. import javax.microedition.lcdui.Image;  

    11.   



    12.  

    13.   

    14. /** 

    15.  * 類名:GameCanvas.java 

       編寫日期: 2006-11-29 

       程序功能描述:
       

    16.  * 實現雙緩沖的Game畫布。實現原理是創建一個BufferImage。然后繪制,最后顯示出來。就這么簡單。

       Demo: 

       Bug:
       

    17.  * 

       

    18.  *  

    19.  * 程序變更日期 :

       變更作者 :

       變更說明 :

       

    20.  *  

    21.  * @author wuhua 

       
       

    22.  */  

    23. public abstract class GameCanvas extends Canvas {  

    24.   

    25.     /** 

    26.      * 繪制緩沖的圖片。用戶繪制資源的時候都是操作這個圖片來進行的 

    27.      */  

    28.     private Image bufferImage;  

    29.   

    30.     private int height;  

    31.   

    32.     private int width;  

    33.   

    34.     private int clipX, clipY, clipWidth, clipHeight;  

    35.   

    36.     private boolean setClip;  

    37.   

    38.     protected GameCanvas() {  

    39.   

    40.         super();  

    41.   

    42.         width = getWidth();  

    43.         height = getHeight();  

    44.   

    45.         this.bufferImage = Image.createImage(width, height);  

    46.   

    47.     }  

    48.   

    49.     protected void paint(Graphics g) {  

    50.         //如果要求繪制指定區域的話就需要這樣了  

    51.         if (this.setClip) {  

    52.             g.clipRect(this.clipX, this.clipY, this.clipWidth, this.clipHeight);  

    53.             this.setClip = false;  

    54.         }  

    55.         g.drawImage(this.bufferImage, 00, Graphics.TOP | Graphics.LEFT);  

    56.   

    57.     }  

    58.   

    59.     public void flushGraphics(int x, int y, int width, int height) {  

    60.         this.setClip = true;  

    61.         this.clipX = x;  

    62.         this.clipY = y;  

    63.         this.clipWidth = width;  

    64.         this.clipHeight = height;  

    65.   

    66.         repaint();  

    67.         serviceRepaints();  

    68.     }  

    69.   

    70.     public void flushGraphics() {  

    71.         repaint();  

    72.         serviceRepaints();  

    73.     }  

    74.   

    75.     /** 

    76.      * 設計者主要是通過調用這個方法獲取圖片。然后就可以繪制了 

    77.      * @return 

    78.      */  

    79.     protected Graphics getGraphics() {  

    80.         return this.bufferImage.getGraphics();  

    81.     }  

    82.   

    83.     /** 

    84.      * 這個方法主要是處理Nokia平臺,用戶調用setFullScreenMode(boolean enable) 時重新按照新的w & h創建緩沖圖片 

    85.      */  

    86.     protected final void sizeChanged(int w, int h) {  

    87.         if (h > height) {  

    88.             this.bufferImage = Image.createImage(w, h);  

    89.         }  

    90.     }  

    91. }  


    posted on 2006-12-30 09:24 路是爬出來的 閱讀(296) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久久亚洲av毛片大| 国产伦精品一区二区三区免费下载 | 91av在线免费视频| 国产亚洲综合一区柠檬导航| 一级毛片免费播放男男| www.亚洲精品| 香蕉免费在线视频| 亚洲成人在线电影| 91免费国产自产地址入| 免费一级全黄少妇性色生活片| 国产资源免费观看| 免费人成大片在线观看播放| 免费大片黄手机在线观看| 一级毛片免费观看不收费| 国产亚洲福利精品一区| 久久久久免费看黄a级试看| 亚洲黄色在线播放| 日本一道本高清免费| 免费看黄网站在线看| 久久精品九九亚洲精品天堂| 在线免费观看亚洲| 亚洲综合av一区二区三区不卡| 免费人成在线观看播放国产| 中文字幕免费观看全部电影| 亚洲美女aⅴ久久久91| 毛片免费观看的视频在线| 麻豆69堂免费视频| 亚洲av无码成人黄网站在线观看| 亚洲香蕉免费有线视频| 国产亚洲日韩在线a不卡| 亚洲精品无码Av人在线观看国产| 五月婷婷在线免费观看| 老司机精品视频免费| 久久精品国产亚洲AV麻豆不卡| 欧美最猛性xxxxx免费| 无码毛片一区二区三区视频免费播放| 亚洲精品无码av人在线观看 | 午夜色a大片在线观看免费| 一级毛片免费播放视频| 亚洲精品国产肉丝袜久久| 国产午夜鲁丝片AV无码免费|