




版權(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,通過移動(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è)圖像組合起來(lái),每一個(gè)圖像稱為一幀,每一幀圖像按照一定時(shí)間間隔顯示出來(lái)形成動(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)格狀,形成很多小的圖像,按照需要將一些小圖像組合起來(lái),形成一個(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ù)說(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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)政部專項(xiàng)資金管理辦法
- 貴州省應(yīng)急鋼橋管理辦法
- 赫章縣維修資金管理辦法
- 路北區(qū)節(jié)水灌溉管理辦法
- 轄區(qū)各小區(qū)物業(yè)管理辦法
- 遼寧省事假管理暫行辦法
- 遼寧省食品抽檢管理辦法
- 過橋資金管理辦法濮陽(yáng)
- 運(yùn)營(yíng)企業(yè)薪酬管理辦法
- 運(yùn)輸公司危房管理辦法
- 2024供電營(yíng)業(yè)規(guī)則學(xué)習(xí)課件
- 《電除顫培訓(xùn)》課件
- 2024屆東北育才中學(xué)數(shù)學(xué)高二第二學(xué)期期末檢測(cè)試題含解析
- 加油站夏季安全用電知識(shí)培訓(xùn)
- 醫(yī)院培訓(xùn)用死亡證明填寫規(guī)范2014南京課件
- HACCP計(jì)劃年度評(píng)審報(bào)告
- 大學(xué)課件-機(jī)電傳動(dòng)控制(完整)
- 抖音短視頻運(yùn)營(yíng)部門各崗位KPI關(guān)鍵績(jī)效考核指標(biāo)表
- 2023年印度涂料市場(chǎng)亞洲涂料分析報(bào)告
- 鋼結(jié)構(gòu)起重機(jī)行車軌道安裝工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- 彩色完整測(cè)試頁(yè)(測(cè)試版)
評(píng)論
0/150
提交評(píng)論