- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 【毕业设计】基于adc0809和8051的数据采集模块化编程.doc
- 【毕业设计】基于avr单片机的智能卡(ic卡)技术.doc
- 【毕业设计】基于gsm 原理利用手机通信的远程信息检视系统.doc
- 【毕业设计】基于j2me的手机游戏设计.doc
- 【毕业设计】基于mvc框架的web开发技术.doc
- 【毕业设计】基于plc的温度监控系统设计.doc
- 【毕业设计】基于web的校园新闻系统后台设计.doc
- 【毕业设计】基于单片机的多点温度检测系统设计.doc
- 【毕业设计】基于基本逻辑器件的数字钟设计.doc
- 【毕业设计】介质损耗角检测系统的研究与设计.doc
- 对数学建模过程中电脑的应用进行深入地探究精选.docx
- 人教A版高中数学必修第二册8.6.3 平面与平面垂直(一)【课件】.pptx
- 人教A版高中数学必修第二册8.5.3 平面与平面平行【课件】.ppt
- 人教A版高中数学必修第二册9.2.1总体取值规律的估计9.2.2总体百分位数的估计【课件】.ppt
- 人教A版高中数学必修第二册8.2 立体图形的直观图【课件】.pptx
- 人教A版高中数学必修第二册8.4.1平面【课件】.ppt
- 人教A版高中数学必修第二册6.4.3第2课时 正弦定理【课件】.ppt
- 人教A版高中数学必修第二册8.5.2 直线与平面平行【课件】.ppt
- 某花园营销推广报告.pptx
- 设备管理体系概述.pptx
最近下载
- TCCIAT0003-2019建筑施工承插型轮扣式模板支架安全技术规程.pdf
- T∕CTCA 6-2019 劳动防护手套.pdf
- 注册单元划分膝关节假体vlc g02.pdf VIP
- JTG5220—2020公路养护工程质量检验评定标准第一册土建工程全面解读.pptx
- 教育部留服务中心国(境)外学历学位认证评估程序和标准(试行)之附则.doc
- 土方工程课件.ppt
- 《医学细胞生物学》课件 第七章 细胞骨架与细胞运动.pptx
- 《排球正面双手垫球》教案排球正面双手垫球公开课教案1水.docx VIP
- 教育法学课件.ppt VIP
- 2023年人教版七年级语文下册期中试卷附参考答案 .pdf VIP
文档评论(0)