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

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

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

    原文見:http://today.java.net/pub/a/today/2005/07/07/j2me3.html

    J2ME是一個很流行的用于移動設備游戲開發(fā)的平臺。J2ME中的MIDP 2.0引入了一個新的API包,它提供了一些定義好的游戲結構,這在以前的1.0版中要通過很多累贅代碼來實現(xiàn)。在這部分tutorial中,我們會學習這個API包,然后用它開發(fā)一個小游戲(為了學習需要,我們會用到包中所有的類)。這個包是javax.microedition.lcdui.game. 它的建立基于我們前兩次學的J2ME概念。

    J2ME游戲API:摘要
    javax.microedition.lcdui.game包只有5個類:GameCanvas, Layer, Sprite, TiledLayer和LayerManager. 這5個類提供了開發(fā)各種游戲應用的平臺。

    LayerSpriteTiledLayer的父類。這個類封裝了游戲中可視化元素的行為。可視化元素可以是小精靈(sprite),代表一個可以在屏幕上來回移動的獨立圖形(或組成動畫的一組圖形),
    或是一個背景層:通過很少的圖片,就可以生成龐大游戲中的背景。我們可以用Layer來布置圖形和進行可視化操作。Layer的子類通過重寫paint(Graphics g)方法將元素繪制到屏幕上。

    LayerManager類可以控制各層的繪制及繪制順序,因此我們可以更方便地管理游戲中的可視化元素(包括小精靈和背景層)。

    GameCanvas類擴展了上兩節(jié)我們講過的Canvas類(畫布),提供一個在屏幕后端運行(off-screen)的緩沖區(qū),所有繪制操作都先在這個緩沖區(qū)上進行,然后再顯示到屏幕。它還提供了得到用戶按鍵信息的快捷方法。

    最好的學習方法應該是寫一個完整的小游戲,通過這個小游戲我們可以了解游戲制作的方方面面。我們在介紹完這個小游戲的構造后(針對目前還沒有游戲開發(fā)經驗的),會在開發(fā)游戲的過程中具體介紹包中的每個類。

    構建游戲的簡短入門

    游戲和動畫是建立在重復執(zhí)行某段代碼的機制上的。這段代碼跟蹤實例變量的值,然后更新相應狀態(tài)。基于當前游戲狀態(tài),代碼將游戲元素繪制到屏幕上。實例變量值是隨著用戶交互和游戲內部行為而改變的。

    代碼的重復執(zhí)行是通過將這段代碼放入循環(huán)中實現(xiàn)的。在進入循環(huán)前,先檢查一下實例變量,看是否要繼續(xù)游戲,否則退出循環(huán)。為了控制實例變量的更新頻率(其實是屏幕刷新的頻率),循環(huán)體中的代碼應該每次休眠一段時間(毫秒計)。

    游戲的結構如下列代碼所示:

    // 主類
    public class MainClass 
    {
      
    private GameCanvas canvas = new MyGameCanvas();


      
    public MainClass() 
      
    {
        
    // 開始一個線程
        canvas.start();
      }

      
      
    // 其他代碼
    }



    // 實際進行繪制的類
    public class MyGameCanvas extends GameCanvas implements Runnable 
    {
      
    public MyGameCanvas() 
      
    {
        
    // 初始化
      }

      
      
    public void start() 
      
    {
        
    // 初始化
        
        
    // 執(zhí)行繪制線程
        Thread runner = new Thread(this);
        runner.start();
      }

      
      
    private void run() 
      
    {
      
        
    // 或者使用(keeprunning = true) 
        
    // keeprunning是一個控制游戲狀態(tài)的實例變量

        
    while(true
        



          
    // 檢查游戲是否達到 
          
    // 某個邊界值或特殊條件
          
          verifyGameState(); 


          
    // 從用戶那里得到輸入,然后更新描述游戲元素狀態(tài)的變量值 
          
            checkUserInput(); 


          
    // 使用Graphics對象將當前游戲狀態(tài)繪制到屏幕上

          updateGameScreen(getGraphics());


          
    // 控制屏幕更新的頻率 

          Thread.sleep(milliseconds); 
        }

      }

    }

     

    我們將在以下幾節(jié)中使用這個結構來開發(fā)一個游戲。



    版權所有 羅明
    posted on 2005-12-07 20:40 羅明 閱讀(1863) 評論(0)  編輯  收藏 所屬分類: JavaJ2ME
     
    主站蜘蛛池模板: 亚洲狠狠色丁香婷婷综合| 亚洲乱码日产精品a级毛片久久| 亚洲av一综合av一区| 亚洲阿v天堂在线2017免费| 国产亚洲精品免费视频播放| 亚洲天堂免费在线视频| 亚洲视频在线免费| 永久免费观看黄网站| 久久精品国产精品亚洲| 成人免费无码H在线观看不卡| 亚洲伊人成无码综合网 | 女人18毛片水最多免费观看| 午夜在线a亚洲v天堂网2019| 国产无遮挡色视频免费视频| 色偷偷亚洲第一综合| 夜色阁亚洲一区二区三区| fc2成年免费共享视频网站| 久久被窝电影亚洲爽爽爽 | 亚洲人精品亚洲人成在线| 国产伦精品一区二区三区免费迷| 一区二区三区视频免费| 亚洲精品无码成人AAA片| 污视频在线免费观看| 亚洲娇小性xxxx色| 波多野结衣一区二区免费视频| 一级一黄在线观看视频免费| 亚洲精品夜夜夜妓女网| 亚洲免费在线视频观看| 亚洲av永久无码天堂网| 亚洲一区爱区精品无码| 毛片免费全部播放无码| 自拍偷自拍亚洲精品播放| 国产av无码专区亚洲av桃花庵| 日日麻批免费40分钟日本的| 狠狠入ady亚洲精品| 亚洲国产精品高清久久久| 德国女人一级毛片免费| a毛片在线免费观看| 亚洲视频无码高清在线| 在线播放亚洲第一字幕| 女性无套免费网站在线看|