网站大量收购独家精品文档,联系QQ:2885784924

【毕业设计】数位内容传输技术课程实习j2me游戏设计.doc

【毕业设计】数位内容传输技术课程实习j2me游戏设计.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
數位內容傳輸技術課程實習 J2ME遊戲設計 實習四 (11/15) ?口述部分: MIDP的遊戲套件 ?上機部分: 一、完成最後的小練習 一、MIDP 2.0 遊戲套件 MIDP 1.0在遊戲開發上並沒提供別的API,由於行動娛樂市場逐漸受到歡迎,MIDP 2.0中已經針對遊戲所需要的功能透過javax.microedition.lcdui.game套件提供支援,例如圖形翻轉、碰撞偵測、按鍵處理等等功能都可以在這個套件內找到,這個套件的類別階層如:GameCanvas類別:遊戲的舞台,提供了繪製遊戲內容及偵測使用者輸入的機制Layer類別:表示一個可以出現在遊戲場景中的圖層Sprite類別:Layer類別的子類別,這個圖層的用途是作為遊戲中會出現的角色TiledLayer類別:Layer類別的子類別,這個圖層可以利用一張張的小型影像製作出大型的圖層,例如遊戲的背景LayerManager類別:圖層管理員,可以管理不同圖層的視覺深度,同時提供視窗設定的功能GameCanvas提供遊戲場景所需要的一些基本功能,所有的遊戲邏輯和圖像繪製都會在這裡進行,因此應該先認識這個類別的使用。因為GameCanvas是一個抽象類別,所以必須自己建立一個新的類別並繼承GameCanvas類別,例如我們定義了以下的類別:import javax.microedition.lcdui.* ; import javax.microedition.lcdui.game.* ; class MyGameCanvas extends GameCanvas implements Runnable{ public MyGameCanvas(){ super(true); } void start(){ Thread gameThread = new Thread(this); gameThread.start(); } public void run(){ Graphics g = getGraphics(); while(true){ /* 取得目前按鍵的狀態 */ int keyStates = getKeyStates(); /* 檢查game action按鍵LEFT的狀態 */ f ((keyState LEFT_PRESSED) != 0) { /* 做一些處理,例如移動遊戲中的角色 */ } /* 檢查game action按鍵RIGHT的狀態 */ if ((keyState RIGHT_PRESSED) != 0) { /* 做一些處理,例如移動遊戲中的角色 */ } /* 清除緩衝區 */ g.setColor(0xFFFFFF); g.fillRect(0,0,getWidth(), getHeight()); /* 把圖形畫在緩衝區內 */ paintSomething(g); /* 將緩衝區內的影像複製到實際螢幕上 */ flushGraphics(); /* 等待一段時間 */ try{ Thread.sleep(30); }catch(Exception ex){} } } } MyGameCanvas類別繼承GameCanvas類別並實做Runnable介面,表示MyGameCanvas類別需要一個執行緒,這個執行緒的功能就是用來控制遊戲的進行,因此我們提供了一個run()方法來定義執行緒要執行的內容,並且提供了一個start()方法讓MyGameCanvas物件可以隨時啟動這個執行緒。GameCanvas 唯一的建構式需要一個參數,所以我們類別裡的建構式第一件事情就是叫用GameCanvas (使用super()),並傳入true 或false。這個GameCanvas 建構式裡唯一的參數所代表的意義是:是否要抑制鍵盤事件,傳入true 就是要抑制,傳入false 就是不要。也就是說,如果我們傳入true,那麼系統會抑制大多數的鍵盤事件的產生,所以我們所撰寫的keyPressed() / keyReleased() / keyRepeated()將不會被呼叫。 在run()方法的一開始我們呼叫GameCanvas類別的getGraphics()方法,這個方法會取得GameCanvas擁有的Graphics物件參考。要注意的是,這些繪圖的動作都只是把遊戲內容畫在GameCanvas物件的影像資料記憶體,因此我們最後必須呼叫flushGraphics()方法把這塊記憶體的資料顯示到螢幕上。 遊戲執行緒每一次迴圈執行都應該呼叫Thread物件的sleep()方法休息一段時間,再進行下一次的迴圈內容,對人的眼睛而言,每秒20到30張的畫面更新頻率是最適當的(sl

文档评论(0)

精品资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档