版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章MIDP游戲編程主講教師:賈震斌本章目錄12.1MIDP2.0GameAPI概述12.2游戲容器GameCanvas類12.3游戲精靈Sprite12.4游戲地圖TiledLayer類12.5圖層管理LayerManager類12.6游戲?qū)嵗好鄯渖鋼舯菊聦W(xué)習(xí)目標(biāo)了解MIDP游戲編程基本概念、常用類及方法、基本程序框架12.1MIDP2.0GameAPI概述12.1.1GameAPI類庫簡(jiǎn)介MIDP提供了GameCanvas類庫實(shí)現(xiàn)游戲編程所需功能,GameCanvas是Canvas的擴(kuò)展為了便于操控圖像,可以使圖像中不同的內(nèi)容位于不同的層面上,這就是圖層的概念,如讓人物和背景位于不同的圖層上。對(duì)每一圖層可以分別管理、操控。為此,MIDP提供了圖層功能,圖層由類Layer實(shí)現(xiàn),而多個(gè)圖層的管理又由LayerManger類負(fù)責(zé)。不同的圖層疊加在一起形成了一個(gè)完整的圖像。由于受屏幕大小限制,圖像可能無法完全顯示出來,LayerManger類提供了觀察窗口ViewWindow,通過移動(dòng)觀察窗口實(shí)現(xiàn)圖像不同部分的顯示。圖層中有兩個(gè)特殊圖層:Sprite和TiledLayer,Sprite存放游戲角色,TiledLayer存放游戲背景12.2游戲容器GameCanvas類12.2.1屏幕緩沖每一個(gè)GameCanvas對(duì)象創(chuàng)建時(shí)首先在內(nèi)存中開辟屏幕大小的緩沖區(qū),在緩沖區(qū)中繪制圖形,需要時(shí)再將緩沖區(qū)內(nèi)容復(fù)制到屏幕上GameCanvas使用過程創(chuàng)建GameCanvas對(duì)象,同時(shí)在內(nèi)存中創(chuàng)建緩沖區(qū)建立Graphics對(duì)象,調(diào)用GameCanvas的getGraphics()方法,獲得Graphics對(duì)象,通過Graphics對(duì)象往內(nèi)存中繪圖,繪圖過程與Canvas中不同的是繪圖過程不一定要在paint()方法中調(diào)用GameCanvas的flushGraphics()方法將圖像送到屏幕上12.2.2獲得鍵盤輸入狀態(tài)利用繼承于Canvas類的鍵盤按鍵事件利用GameCanvas專用的getKeyStates()方法。可以取得多個(gè)同時(shí)按下的鍵值的組合鍵值常量,參見教材p.20812.3游戲精靈Sprite12.3.1幀控制Sprite是Layer類的子類,負(fù)責(zé)主要角色圖層,這個(gè)圖層由一個(gè)個(gè)圖像組合起來,每一個(gè)圖像稱為一幀,每一幀圖像按照一定時(shí)間間隔顯示出來形成動(dòng)畫創(chuàng)建幀的方法如下:Sprite(Image
image,
int
framWeidth,
int
frameHeight)幀的順序也就是幀的索引值從0開始,Sprite提供了切換順序的方法
voidsetFrame(int
sequenceIndex)
voidnextFrame()
voidprevFrame()12.3.2精靈翻轉(zhuǎn)圖像可以以任何位置為中心旋轉(zhuǎn),Sprite提供了方法,如:voiddefineReferencePixel(int
x,int
y)
voidsetRefPixelPosition(int
x,int
y)12.3.3碰撞檢測(cè)在GameCanvas中可以通過collidesWith()方法的不同參數(shù)的重載形式檢測(cè)Sprite與Image、Sprite與Sprite、Sprite與TiledLayer之間是否相遇(即碰撞檢測(cè)),方法如下:booleancollidesWith(Image
image,int
x,int
y,boolean
pixelLevel)
ChecksforacollisionbetweenthisSpriteandthespecifiedImagewithitsupperleftcorneratthespecifiedlocation.
booleancollidesWith(Sprite
s,boolean
pixelLevel)
ChecksforacollisionbetweenthisSpriteandthespecifiedSprite.
booleancollidesWith(TiledLayer
t,boolean
pixelLevel)
ChecksforacollisionbetweenthisSpriteandthespecifiedTiledLayer.其中參數(shù)pixelLevel表示檢測(cè)模式,在MIDP2.0中定義了兩種模式:像素模式和邊界模式。像素模式用于兩個(gè)不透明的像素重疊的碰撞檢測(cè),而邊界模式用于邊界相接時(shí)表示相遇的情況。12.4游戲地圖TiledLayer類12.4.1游戲中的地圖Sprite將屏幕分成大小相同的網(wǎng)格,在每個(gè)網(wǎng)格里面顯示一張圖像,每個(gè)圖像都會(huì)有一個(gè)索引值,然后組合成一個(gè)完整的圖像,這種方式適合用于一個(gè)圖像,并且圖像很復(fù)雜的情況。TiledLayer也是將一個(gè)大圖像分割成網(wǎng)格狀,形成很多小的圖像,按照需要將一些小圖像組合起來,形成一個(gè)完整的圖像。TiledLayer在分網(wǎng)格的時(shí)候,這些分割成的小圖像都有一個(gè)索引值,索引時(shí)有動(dòng)態(tài)和靜態(tài)之分,靜態(tài)索引值從1開始計(jì)數(shù),動(dòng)態(tài)索引值從-1開始計(jì)數(shù),動(dòng)態(tài)索引值和靜態(tài)索引值之間存在關(guān)聯(lián)。TiledLayer類構(gòu)造函數(shù):TiledLayer(int
columns,int
rows,Image
image,int
tileWidth,int
tileHeight)參數(shù)說明:int
columns:網(wǎng)格的列數(shù)int
rows:網(wǎng)格的行數(shù)Image
image:被分割的圖像int
tileWidth:分割的小圖寬度int
tileHeight:分割的小圖高度注:構(gòu)造函數(shù)獲得的是靜態(tài)網(wǎng)格TiledLayer類獲得與靜態(tài)網(wǎng)絡(luò)關(guān)聯(lián)的動(dòng)態(tài)網(wǎng)格的方法:voidsetAnimatedTile(int
animatedTileIndex,int
staticTileIndex)將Tiley放到指定的網(wǎng)絡(luò)里:voidsetCell(int
col,int
row,int
tileIndex)將Tiley放到指定區(qū)域的網(wǎng)絡(luò)里:voidfillCells(int
col,int
row,int
numCols,int
numRows,int
tileIndex)12.5圖層管理LayerManager類圖層的概念就是將圖像分層處理疊加顯示形成完整游戲圖像,圖層用Layer類處理,各圖層的管理由LayerManager負(fù)責(zé)。LayerManager類的方法將各圖層添加到屏幕上:voidappend(Layer
layer)刪除某個(gè)圖層:voidremove(Layer
layer)插入某個(gè)圖層:voidinsert(Layer
layer,int
index)設(shè)置視圖觀察窗口:voidsetViewWindow(int
x,int
y,int
width,int
height)圖層顯示:voidpaint(Gr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度床上用品電商平臺(tái)大數(shù)據(jù)營(yíng)銷合作合同4篇
- 2025年度海洋經(jīng)濟(jì)園區(qū)場(chǎng)地租賃保證金及海洋產(chǎn)業(yè)發(fā)展合同4篇
- 2025年度人工智能代持股份合同范本4篇
- 二零二五年度文化娛樂活動(dòng)廣告合作與版權(quán)保護(hù)合同4篇
- 二零二五年度建筑工地節(jié)能門窗安裝施工合同4篇
- 2025年度旅行社與文化機(jī)構(gòu)合作的文化旅游產(chǎn)品開發(fā)合同4篇
- 2025年度美發(fā)店員工職業(yè)發(fā)展合同范本4篇
- 二零二五年度溫馨家居租住服務(wù)協(xié)議2篇
- 個(gè)人股份代持協(xié)議(2024年修訂版)
- 二零二五年度養(yǎng)老社區(qū)物業(yè)委托管理及照護(hù)服務(wù)協(xié)議4篇
- 帶狀皰疹護(hù)理查房課件整理
- 年月江西省南昌市某綜合樓工程造價(jià)指標(biāo)及
- 奧氏體型不銹鋼-敏化處理
- 作物栽培學(xué)課件棉花
- 交通信號(hào)控制系統(tǒng)檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- 弱電施工驗(yàn)收表模板
- 絕對(duì)成交課件
- 探究基坑PC工法組合鋼管樁關(guān)鍵施工技術(shù)
- 國名、語言、人民、首都英文-及各地區(qū)國家英文名
- API SPEC 5DP-2020鉆桿規(guī)范
- 組合式塔吊基礎(chǔ)施工專項(xiàng)方案(117頁)
評(píng)論
0/150
提交評(píng)論