版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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類庫(kù)簡(jiǎn)介MIDP提供了GameCanvas類庫(kù)實(shí)現(xiàn)游戲編程所需功能,GameCanvas是Canvas的擴(kuò)展為了便于操控圖像,可以使圖像中不同的內(nèi)容位于不同的層面上,這就是圖層的概念,如讓人物和背景位于不同的圖層上。對(duì)每一圖層可以分別管理、操控。為此,MIDP提供了圖層功能,圖層由類Layer實(shí)現(xiàn),而多個(gè)圖層的管理又由LayerManger類負(fù)責(zé)。不同的圖層疊加在一起形成了一個(gè)完整的圖像。由于受屏幕大小限制,圖像可能無(wú)法完全顯示出來(lái),LayerManger類提供了觀察窗口ViewWindow,通過(guò)移動(dòng)觀察窗口實(shí)現(xiàn)圖像不同部分的顯示。圖層中有兩個(gè)特殊圖層:Sprite和TiledLayer,Sprite存放游戲角色,TiledLayer存放游戲背景12.2游戲容器GameCanvas類12.2.1屏幕緩沖每一個(gè)GameCanvas對(duì)象創(chuàng)建時(shí)首先在內(nèi)存中開(kāi)辟屏幕大小的緩沖區(qū),在緩沖區(qū)中繪制圖形,需要時(shí)再將緩沖區(qū)內(nèi)容復(fù)制到屏幕上GameCanvas使用過(guò)程創(chuàng)建GameCanvas對(duì)象,同時(shí)在內(nèi)存中創(chuàng)建緩沖區(qū)建立Graphics對(duì)象,調(diào)用GameCanvas的getGraphics()方法,獲得Graphics對(duì)象,通過(guò)Graphics對(duì)象往內(nèi)存中繪圖,繪圖過(guò)程與Canvas中不同的是繪圖過(guò)程不一定要在paint()方法中調(diào)用GameCanvas的flushGraphics()方法將圖像送到屏幕上12.2.2獲得鍵盤(pán)輸入狀態(tài)利用繼承于Canvas類的鍵盤(pán)按鍵事件利用GameCanvas專用的getKeyStates()方法??梢匀〉枚鄠€(gè)同時(shí)按下的鍵值的組合鍵值常量,參見(jiàn)教材p.20812.3游戲精靈Sprite12.3.1幀控制Sprite是Layer類的子類,負(fù)責(zé)主要角色圖層,這個(gè)圖層由一個(gè)個(gè)圖像組合起來(lái),每一個(gè)圖像稱為一幀,每一幀圖像按照一定時(shí)間間隔顯示出來(lái)形成動(dòng)畫(huà)創(chuàng)建幀的方法如下:Sprite(Image
image,
int
framWeidth,
int
frameHeight)幀的順序也就是幀的索引值從0開(kāi)始,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中可以通過(guò)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)格狀,形成很多小的圖像,按照需要將一些小圖像組合起來(lái),形成一個(gè)完整的圖像。TiledLayer在分網(wǎng)格的時(shí)候,這些分割成的小圖像都有一個(gè)索引值,索引時(shí)有動(dòng)態(tài)和靜態(tài)之分,靜態(tài)索引值從1開(kāi)始計(jì)數(shù),動(dòng)態(tài)索引值從-1開(kāi)始計(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ù)說(shuō)明: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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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版綠色環(huán)保售房協(xié)議范本下載2篇
- 二零二五年度倉(cāng)庫(kù)安全責(zé)任保險(xiǎn)合同范本2篇
- 2025年銷售員專屬勞動(dòng)合同標(biāo)準(zhǔn)版2篇
- 2025年車(chē)庫(kù)租賃合同環(huán)保責(zé)任及措施4篇
- 新建樓施工方案
- 2025年度股權(quán)代持協(xié)議書(shū):綜合金融服務(wù)股權(quán)代持與市場(chǎng)拓展4篇
- 二零二五版羅馬柱工程古建筑遺址考古研究合同4篇
- 2025住房房屋出租的合同
- 二零二五年度房地產(chǎn)銷售市場(chǎng)調(diào)研內(nèi)部承包合同3篇
- 2025年度車(chē)輛抵押權(quán)解除合同模板4篇
- 檢驗(yàn)員績(jī)效考核
- 農(nóng)藥合成研發(fā)項(xiàng)目流程
- 機(jī)電安裝工程安全管理
- 2024年上海市第二十七屆初中物理競(jìng)賽初賽試題及答案
- 信息技術(shù)部年終述職報(bào)告總結(jié)
- 理光投影機(jī)pj k360功能介紹
- 六年級(jí)數(shù)學(xué)上冊(cè)100道口算題(全冊(cè)完整版)
- 八年級(jí)數(shù)學(xué)下冊(cè)《第十九章 一次函數(shù)》單元檢測(cè)卷帶答案-人教版
- 帕薩特B5維修手冊(cè)及帕薩特B5全車(chē)電路圖
- 小學(xué)五年級(jí)解方程應(yīng)用題6
- 年月江西省南昌市某綜合樓工程造價(jià)指標(biāo)及
評(píng)論
0/150
提交評(píng)論