![手機游戲開發(fā)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/f6b43c0f-321f-476b-8fae-5b2ce0812ebd/f6b43c0f-321f-476b-8fae-5b2ce0812ebd1.gif)
![手機游戲開發(fā)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/f6b43c0f-321f-476b-8fae-5b2ce0812ebd/f6b43c0f-321f-476b-8fae-5b2ce0812ebd2.gif)
![手機游戲開發(fā)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/f6b43c0f-321f-476b-8fae-5b2ce0812ebd/f6b43c0f-321f-476b-8fae-5b2ce0812ebd3.gif)
![手機游戲開發(fā)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/f6b43c0f-321f-476b-8fae-5b2ce0812ebd/f6b43c0f-321f-476b-8fae-5b2ce0812ebd4.gif)
![手機游戲開發(fā)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/f6b43c0f-321f-476b-8fae-5b2ce0812ebd/f6b43c0f-321f-476b-8fae-5b2ce0812ebd5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 游戲是策劃、美工和程序三者的協(xié)調(diào)游戲是策劃、美工和程序三者的協(xié)調(diào)及創(chuàng)意和商業(yè)運作的平衡。集美術(shù)、音樂、及創(chuàng)意和商業(yè)運作的平衡。集美術(shù)、音樂、動畫、人工智能等元素于一身。動畫、人工智能等元素于一身。 目前支持目前支持java的手機性能越來越強大,的手機性能越來越強大,同時,手機的價格在不斷地下降,因此,同時,手機的價格在不斷地下降,因此,手機游戲的市場前景將是非常良好的。本手機游戲的市場前景將是非常良好的。本章將從圖片的處理、動畫的制作和音效的章將從圖片的處理、動畫的制作和音效的實現(xiàn)來學(xué)習(xí)手機游戲開發(fā)的基礎(chǔ)知識。實現(xiàn)來學(xué)習(xí)手機游戲開發(fā)的基礎(chǔ)知識。 手機游戲開發(fā)簡介手機游戲開發(fā)簡介7.1 png
2、 png圖像格式介紹圖像格式介紹7.2游戲設(shè)計中的動畫游戲設(shè)計中的動畫7.3手機游戲手機游戲2d2d動畫開發(fā)動畫開發(fā)7.4 手機音效開發(fā)手機音效開發(fā)7.5綜合示例:飛機碰撞綜合示例:飛機碰撞7.6小結(jié)小結(jié)7.77.1 7.1 手機游戲開發(fā)簡介手機游戲開發(fā)簡介 現(xiàn)在的移動電話可以看作小型的計算現(xiàn)在的移動電話可以看作小型的計算機,只是它的處理能力與機,只是它的處理能力與pc相比很有限,相比很有限,但是足夠運行一個小型的游戲。但是足夠運行一個小型的游戲。 另一個特性就是它們還是網(wǎng)絡(luò)計算機,另一個特性就是它們還是網(wǎng)絡(luò)計算機,能夠高速發(fā)送和接收數(shù)字?jǐn)?shù)據(jù)。能夠高速發(fā)送和接收數(shù)字?jǐn)?shù)據(jù)。 除了語音除了語音數(shù)據(jù)
3、以外,它們還可以發(fā)送和接收其他類數(shù)據(jù)以外,它們還可以發(fā)送和接收其他類型的數(shù)據(jù)。型的數(shù)據(jù)。 所以類似所以類似傳奇?zhèn)髌?、千年千年這樣的這樣的網(wǎng)絡(luò)游戲?qū)硪部梢栽谑謾C上實現(xiàn)。網(wǎng)絡(luò)游戲?qū)硪部梢栽谑謾C上實現(xiàn)。 但是與但是與pc相比,它們的輸入和顯示功相比,它們的輸入和顯示功能也很有限。手機的屏幕都較小,其對聲能也很有限。手機的屏幕都較小,其對聲音處理能力也很有限。音處理能力也很有限。 開發(fā)者在這樣的平臺上開發(fā)應(yīng)用,必開發(fā)者在這樣的平臺上開發(fā)應(yīng)用,必須認(rèn)真的考慮這些特點。本節(jié)將重點討論須認(rèn)真的考慮這些特點。本節(jié)將重點討論手機本身的特點和手機游戲開發(fā)的特點。手機本身的特點和手機游戲開發(fā)的特點。 7.1.1
4、 7.1.1 手機游戲的類型手機游戲的類型 1 1嵌入式游戲嵌入式游戲 2 2短信息服務(wù)游戲短信息服務(wù)游戲 3 3wapwap瀏覽器游戲瀏覽器游戲 圖圖7-1 wap7-1 wap游戲的工作原理圖游戲的工作原理圖 7.1.2 7.1.2 手機游戲開發(fā)特點手機游戲開發(fā)特點 1 1龐大的潛在用戶群龐大的潛在用戶群 2 2便攜性便攜性 3 3屏幕小屏幕小 4 4有限的顏色和聲音支持有限的顏色和聲音支持 5 5應(yīng)用程序大小限制應(yīng)用程序大小限制 6 6高等待時間高等待時間 7 7可中斷性是關(guān)鍵可中斷性是關(guān)鍵 7.1.3 7.1.3 揚長避短的手機游戲揚長避短的手機游戲開發(fā)開發(fā) 1 1縮短每回合的游戲時間
5、縮短每回合的游戲時間 2 2合理處理等待時間合理處理等待時間 7.2 png 7.2 png圖像格式介紹圖像格式介紹 7.2.1 png 7.2.1 png的由來的由來 png全名全名portable network graphics,字面意思是字面意思是“可移植性網(wǎng)絡(luò)用圖形可移植性網(wǎng)絡(luò)用圖形”,從,從這簡單幾個字已經(jīng)明白定義了這簡單幾個字已經(jīng)明白定義了png的用途的用途以及主要發(fā)展方向。以及主要發(fā)展方向。 1996年,年,png group向向w3c(world wide web consortium)提出一種多媒體)提出一種多媒體圖形格式,重點在于改進(jìn)現(xiàn)有圖形格式,重點在于改進(jìn)現(xiàn)有jpg跟
6、跟gif的缺點,并且提供更多新的概念與壓縮模的缺點,并且提供更多新的概念與壓縮模式,在提出后得到式,在提出后得到w3c的認(rèn)可與推薦。的認(rèn)可與推薦。 在在1996年年10月月1號,號,w3c正式發(fā)函公正式發(fā)函公告,推薦告,推薦png為最佳的圖形格式,并且以為最佳的圖形格式,并且以“png delivers higher quality graphics for web page design”的文字作為該文件的的文字作為該文件的標(biāo)頭。標(biāo)頭。 7.2.2 png 7.2.2 png的圖檔格式特性的圖檔格式特性 png保留了大部分保留了大部分gif的特性,的特性, png的壓縮率很高,尤其是圖表型的
7、圖片的壓縮率很高,尤其是圖表型的圖片 7.2.3 png 7.2.3 png格式圖像的壓縮格式圖像的壓縮及處理及處理 png圖像格式文件(或者稱為數(shù)據(jù)流)圖像格式文件(或者稱為數(shù)據(jù)流)由一個由一個8字節(jié)的字節(jié)的png文件署名(文件署名(png file signature)域和按照特定結(jié)構(gòu)組織的)域和按照特定結(jié)構(gòu)組織的3個以個以上的數(shù)據(jù)塊(上的數(shù)據(jù)塊(chunk)組成。)組成。 png定義了兩種類型的數(shù)據(jù)塊,一種定義了兩種類型的數(shù)據(jù)塊,一種是稱為關(guān)鍵數(shù)據(jù)塊(是稱為關(guān)鍵數(shù)據(jù)塊(critical chunk),這),這是標(biāo)準(zhǔn)的數(shù)據(jù)塊,另一種叫做輔助數(shù)據(jù)塊是標(biāo)準(zhǔn)的數(shù)據(jù)塊,另一種叫做輔助數(shù)據(jù)塊(anc
8、illary chunks),這是可選的數(shù)據(jù)塊。),這是可選的數(shù)據(jù)塊。 7.2.4 7.2.4 使用使用pngpng圖片圖片 在在midp具體實現(xiàn)中,具體實現(xiàn)中,images可以是可以是可變的也可以是不可變的??勺兊囊部梢允遣豢勺兊?。 不可變的不可變的image可以從二進(jìn)制圖像文可以從二進(jìn)制圖像文件創(chuàng)建,如果要用二進(jìn)制圖像數(shù)據(jù)來創(chuàng)建件創(chuàng)建,如果要用二進(jìn)制圖像數(shù)據(jù)來創(chuàng)建image,這些數(shù)據(jù)必須是設(shè)備支持的格式。,這些數(shù)據(jù)必須是設(shè)備支持的格式。 有的設(shè)備可能會支持額外的一些格式,有的設(shè)備可能會支持額外的一些格式,不過所有設(shè)備都必須支持不過所有設(shè)備都必須支持png格式。在手格式。在手機中使用機中使用
9、png圖片,必須先把圖片加載到圖片,必須先把圖片加載到內(nèi)存,并且實例化成為一個內(nèi)存,并且實例化成為一個image對象。對象。 image對象的構(gòu)造方法如下:對象的構(gòu)造方法如下:public static image createimage(string name) 圖圖7-2 7-2 旋轉(zhuǎn)的旋轉(zhuǎn)的“x”x” 7.2.5 7.2.5 游戲菜單制作游戲菜單制作 當(dāng)玩家在菜單項中選擇了某選項后,當(dāng)玩家在菜單項中選擇了某選項后,系統(tǒng)給玩家返回的界面應(yīng)該不同。系統(tǒng)給玩家返回的界面應(yīng)該不同。 下例菜單選項包括:新游戲、高分榜、下例菜單選項包括:新游戲、高分榜、幫助和退出。其他屏幕包括:游戲中的界幫助和退出
10、。其他屏幕包括:游戲中的界面、查看高分榜的界面、查看幫助的界面。面、查看高分榜的界面、查看幫助的界面。 圖圖7-3 7-3 游戲的菜單界面游戲的菜單界面 7.3 7.3 游戲設(shè)計中的動畫游戲設(shè)計中的動畫 7.3.1 7.3.1 動畫基礎(chǔ)動畫基礎(chǔ) 1 1什么是動畫什么是動畫 動畫是通過連續(xù)播放一系列畫面,給動畫是通過連續(xù)播放一系列畫面,給人的視覺造成連續(xù)變化的圖畫。人的視覺造成連續(xù)變化的圖畫。 2 2動畫制作應(yīng)注意的問題動畫制作應(yīng)注意的問題 (1)速度的處理)速度的處理(2)循環(huán)動畫)循環(huán)動畫(3)夸張與擬人)夸張與擬人 7.3.2 7.3.2 雙緩沖技術(shù)雙緩沖技術(shù) 雙緩沖技術(shù)是編寫雙緩沖技術(shù)是
11、編寫j2me游戲程序的游戲程序的關(guān)鍵技術(shù)之一。實際上,雙緩沖技術(shù)是計關(guān)鍵技術(shù)之一。實際上,雙緩沖技術(shù)是計算機動畫的一項傳統(tǒng)技術(shù)。算機動畫的一項傳統(tǒng)技術(shù)。 造成屏幕閃爍的主要原因在于,畫面造成屏幕閃爍的主要原因在于,畫面在顯示的同時,程序又在改變它。解決辦在顯示的同時,程序又在改變它。解決辦法就是在內(nèi)存中開辟一片區(qū)域作為后臺畫法就是在內(nèi)存中開辟一片區(qū)域作為后臺畫面,程序?qū)λ隆⑿薷?,完成后再顯示面,程序?qū)λ?、修改,完成后再顯示它。它。 這樣被顯示的圖像永遠(yuǎn)是已經(jīng)完全畫這樣被顯示的圖像永遠(yuǎn)是已經(jīng)完全畫好的圖像,程序修改的將不是正在被顯示好的圖像,程序修改的將不是正在被顯示的圖像。當(dāng)然還有其他
12、方法可以解決屏幕的圖像。當(dāng)然還有其他方法可以解決屏幕閃爍問題,但使用雙緩沖技術(shù)是一種值得閃爍問題,但使用雙緩沖技術(shù)是一種值得推薦的解決方案。推薦的解決方案。 雙緩沖思想體現(xiàn)在程序上就是要依次雙緩沖思想體現(xiàn)在程序上就是要依次完成以下幾步工作。完成以下幾步工作。 (1)定義一個)定義一個graphics對象對象bg和一和一個個image對象對象buf,按屏幕大小建立一,按屏幕大小建立一個緩沖對象附給個緩沖對象附給buf,然后取得,然后取得buf的的graphics對象附給對象附給bg。 (2)在)在bg(緩沖屏幕)上用(緩沖屏幕)上用drawimage()和和drawstring等語句畫等語句畫圖
13、,相當(dāng)于在緩沖屏幕上畫圖。圖,相當(dāng)于在緩沖屏幕上畫圖。 (3)調(diào)用)調(diào)用repaint()語句,它的功能語句,它的功能是告知系統(tǒng)調(diào)用是告知系統(tǒng)調(diào)用paint()來完成真實屏來完成真實屏幕的顯示。幕的顯示。 (4)在)在paint(graphics g)方法里,將方法里,將buf(緩沖屏幕上的圖片)畫到真實(緩沖屏幕上的圖片)畫到真實屏幕上。屏幕上。 7.3.3 7.3.3 圖片的裁剪圖片的裁剪 我們可以通過設(shè)定裁剪的區(qū)域來顯示我們可以通過設(shè)定裁剪的區(qū)域來顯示圖片的一個片斷,使用前面講的方法:圖片的一個片斷,使用前面講的方法: setclip() getclipx() getclipy() ge
14、tclipwidth() getclipheight() 創(chuàng)建裁剪區(qū)域的步驟如下。創(chuàng)建裁剪區(qū)域的步驟如下。(1)聲明類的引用。)聲明類的引用。(2)創(chuàng)建類的實例,并賦值給這些)創(chuàng)建類的實例,并賦值給這些類引用。類引用。(3)當(dāng)程序開始時,顯示)當(dāng)程序開始時,顯示canvas類類的實例。的實例。 (4)當(dāng))當(dāng)exit時,終止時,終止midlet。(5)定義)定義canvas的派生類,并實現(xiàn)的派生類,并實現(xiàn)commandlistener。 (6)請求保存圖片所需的足夠內(nèi)存)請求保存圖片所需的足夠內(nèi)存塊。如果使用動態(tài)圖像,就創(chuàng)建圖像。塊。如果使用動態(tài)圖像,就創(chuàng)建圖像。否則確定圖像包含什么靜態(tài)圖片文件
15、否則確定圖像包含什么靜態(tài)圖片文件名。名。 (7)從)從paint()方法中判斷圖像是否方法中判斷圖像是否創(chuàng)建成功或者圖像是否打開成功。如創(chuàng)建成功或者圖像是否打開成功。如果是創(chuàng)建一個新的裁剪區(qū)域,在畫布果是創(chuàng)建一個新的裁剪區(qū)域,在畫布上繪制圖像。上繪制圖像。 7.3.4 7.3.4 播放動畫框架播放動畫框架 開發(fā)開發(fā)midp的程序員經(jīng)常會在一個的程序員經(jīng)常會在一個midlet上顯示動畫。上顯示動畫。midp 1.0沒有直接提沒有直接提供對動畫的支持(正在開發(fā)中的供對動畫的支持(正在開發(fā)中的midp 2.0支持),但真要是自己去實現(xiàn),其實也并支持),但真要是自己去實現(xiàn),其實也并非是一件很難的事。非
16、是一件很難的事。 任何動畫的最基本的前提,是要在足任何動畫的最基本的前提,是要在足夠快的時間內(nèi)顯示和更換一張張的圖片,夠快的時間內(nèi)顯示和更換一張張的圖片,讓人的眼睛看到動的畫面效果。圖片必須讓人的眼睛看到動的畫面效果。圖片必須按照順序畫出來。按照順序畫出來。 從一張圖片到下一張圖片之間的變化從一張圖片到下一張圖片之間的變化越小,效果會越好。首先要做的,是使用越小,效果會越好。首先要做的,是使用你的圖片處理軟件(比如你的圖片處理軟件(比如photoshop或者或者firework)創(chuàng)建一系列相同大小的圖片來)創(chuàng)建一系列相同大小的圖片來組成動畫。組成動畫。 每張圖片代表動畫一幀。你需要制作每張圖片
17、代表動畫一幀。你需要制作一定數(shù)量的幀一定數(shù)量的幀越多的幀會讓你的動畫越多的幀會讓你的動畫看上去越平滑。制作好的圖片一定要保存看上去越平滑。制作好的圖片一定要保存成成png格式。格式。 有兩個辦法讓你剛做好的圖片在有兩個辦法讓你剛做好的圖片在midlet上變成動畫。第一,把圖片都放到上變成動畫。第一,把圖片都放到一個一個web服務(wù)器上,讓服務(wù)器上,讓midlet下載他們,下載他們,midp內(nèi)置的內(nèi)置的http支持。支持。 第二個辦法更簡單,把圖片用第二個辦法更簡單,把圖片用midlet打包成打包成jar文件。如果你使用的是文件。如果你使用的是j2me開開發(fā)工具,把發(fā)工具,把png文件放到你的項目
18、文件里文件放到你的項目文件里面就可以了。面就可以了。 動畫的過程其實更像賬本記錄:顯示動畫的過程其實更像賬本記錄:顯示當(dāng)前幀,然后適當(dāng)?shù)馗鼡Q到下一幀。當(dāng)前幀,然后適當(dāng)?shù)馗鼡Q到下一幀。 7.4 7.4 手機游戲手機游戲2d2d動畫開發(fā)動畫開發(fā) 7.4.1 midp 2.0 2d 7.4.1 midp 2.0 2d游戲開發(fā)游戲開發(fā) midp 2.0相對于相對于1.0來說,最大的變化來說,最大的變化就是新添加了用于支持游戲的就是新添加了用于支持游戲的api,它們,它們被放在被放在javax.microedition.lcdui.game 包中。包中。 游戲游戲api包提供了一系列針對無線設(shè)包提供了一
19、系列針對無線設(shè)備的游戲開發(fā)類。備的游戲開發(fā)類。 由于無線設(shè)備僅有有限的計算能力,由于無線設(shè)備僅有有限的計算能力,因此許多因此許多api的目的在于提高的目的在于提高java游戲的游戲的性能,并且把原來很多需要手動編寫的代性能,并且把原來很多需要手動編寫的代碼如屏幕雙緩沖、圖像剪裁等都交給碼如屏幕雙緩沖、圖像剪裁等都交給api間接調(diào)用本地代碼來實現(xiàn)。間接調(diào)用本地代碼來實現(xiàn)。 各廠家有相當(dāng)大的自由來優(yōu)化它們。各廠家有相當(dāng)大的自由來優(yōu)化它們。游戲游戲api使用了使用了midp的低級圖形類接口的低級圖形類接口(graphics,image等)。整個游戲包僅有等)。整個游戲包僅有5個個class。 1 1
20、gamecanvasgamecanvas 2 2layerlayer 3 3layermanagerlayermanager 4 4spritesprite 5 5tiledlayertiledlayer 7.4.2 gamecanvas 7.4.2 gamecanvas的使用的使用 gamecanvas類提供了基本的游戲用類提供了基本的游戲用戶接口。戶接口。 除了從除了從canvas 繼承下來的特性(命令,繼承下來的特性(命令,輸入事件等)以外,它還提供了專門針對輸入事件等)以外,它還提供了專門針對游戲的功能,如后備屏幕緩沖和鍵盤狀態(tài)游戲的功能,如后備屏幕緩沖和鍵盤狀態(tài)查詢的能力。每個查詢的
21、能力。每個gamecanvas 實例都會實例都會有一個唯一的緩沖區(qū)。有一個唯一的緩沖區(qū)。 1 1繪圖繪圖 2 2鍵盤鍵盤 7.4.3 sprite 7.4.3 sprite的使用的使用 sprite 是一個基本的可視元素,可以是一個基本的可視元素,可以用存儲在圖像中的一幀或多幀來渲染它;用存儲在圖像中的一幀或多幀來渲染它;輪流顯示不同的幀可以令輪流顯示不同的幀可以令sprite 實現(xiàn)動畫。實現(xiàn)動畫。 翻轉(zhuǎn)、旋轉(zhuǎn)等幾種變換方式也能應(yīng)用翻轉(zhuǎn)、旋轉(zhuǎn)等幾種變換方式也能應(yīng)用于于sprite 使其外觀改變。作為使其外觀改變。作為layer 子類,子類,sprite 的位置可以改變,并且還能設(shè)置其的位置可以
22、改變,并且還能設(shè)置其可視與否??梢暸c否。 1 1sprite sprite 幀幀 用于渲染用于渲染sprite的原始幀由一個單獨的原始幀由一個單獨的的image對象提供,此對象提供,此image可以是可變的,可以是可變的,也可以是不可變的。也可以是不可變的。 圖圖7-4 7-4 幀的分解幀的分解 2 2幀序列幀序列 sprite 的幀序列定義了幀以什么樣的的幀序列定義了幀以什么樣的順序來顯示。順序來顯示。 圖圖7-5 7-5 幀的序列幀的序列 special frame sequence 圖圖7-6 7-6 幀的特定序列幀的特定序列 圖圖7-7 7-7 更新顯示更新顯示 3 3referenc
23、e pixelreference pixel 作為作為layer 的一個子類,的一個子類,sprite 繼承繼承了很多方法來設(shè)置和獲取位置,如了很多方法來設(shè)置和獲取位置,如setposition(x,y),getx()和和gety()。 4 4sprite sprite 的變換的變換 幾種變換可應(yīng)用于幾種變換可應(yīng)用于sprite??捎玫淖???捎玫淖儞Q包括旋轉(zhuǎn)幾個換包括旋轉(zhuǎn)幾個90 度加上鏡像(沿垂直度加上鏡像(沿垂直軸)。軸)。 圖圖7-8 reference pixel7-8 reference pixel 圖圖7-9 7-9 參考像素點被定位在樹枝末端參考像素點被定位在樹枝末端 圖圖7-1
24、0 sprite7-10 sprite的變換的變換 圖圖7-11 907-11 90度旋轉(zhuǎn)的變換度旋轉(zhuǎn)的變換 7.4.4 7.4.4 碰撞檢測碰撞檢測 sprite 非常適合移動的物體,如游戲非常適合移動的物體,如游戲主角、敵人等,在游戲中,可以使用主角、敵人等,在游戲中,可以使用sprite 提供的碰撞檢測功能來簡化游戲邏提供的碰撞檢測功能來簡化游戲邏輯。輯。 sprite的碰撞檢測可以分兩種:一種的碰撞檢測可以分兩種:一種是矩形碰撞檢測,另一種是像素碰撞檢測。是矩形碰撞檢測,另一種是像素碰撞檢測。游戲中游戲中sprite的大小往往是用包圍它的矩的大小往往是用包圍它的矩形的大小來表示的,如在
25、圖形的大小來表示的,如在圖7-12中的飛機中的飛機和導(dǎo)彈并沒有發(fā)生碰撞但檢查的結(jié)果卻發(fā)和導(dǎo)彈并沒有發(fā)生碰撞但檢查的結(jié)果卻發(fā)生了碰撞。生了碰撞。 圖圖7-12 7-12 矩形碰撞檢測矩形碰撞檢測 對于像素碰撞檢測,往往把對于像素碰撞檢測,往往把sprite的的背景色設(shè)置為相同的顏色,碰撞檢查的時背景色設(shè)置為相同的顏色,碰撞檢查的時候就只判斷兩個圖片除背景色以外的其他候就只判斷兩個圖片除背景色以外的其他像素是否發(fā)生了重疊。像素是否發(fā)生了重疊。 像素碰撞檢測比較精確,但計算復(fù)雜,像素碰撞檢測比較精確,但計算復(fù)雜,一般沒有特殊要求都使用矩形碰撞檢測。一般沒有特殊要求都使用矩形碰撞檢測。下面的例子兩個矩
26、形發(fā)生了碰撞但飛機和下面的例子兩個矩形發(fā)生了碰撞但飛機和導(dǎo)彈并沒有發(fā)生碰撞,如圖導(dǎo)彈并沒有發(fā)生碰撞,如圖7-13所示。所示。 圖圖7-13 7-13 像素碰撞檢測像素碰撞檢測 要判斷兩個要判斷兩個sprite 是否碰撞,或者與是否碰撞,或者與其他其他layer 是否碰撞,可以使用是否碰撞,可以使用collideswith()方法。方法。collideswith()共有三共有三種形式:種形式: (1)public final boolean collideswith(sprite s,boolean pixellevel) (2)public final boolean collideswith
27、(titledlayer t,boolean pixellevel) (3)public final boolean collideswith(image image,int x,int y,boolean pixellevel) 7.4.5 layer 7.4.5 layer的使用的使用 layer 是一個抽象類,表示游戲中的是一個抽象類,表示游戲中的一個可視元素。一個可視元素。 1 1tiledlayertiledlayer tiledlayer 由一系列單元格組成,單由一系列單元格組成,單元格可被一組貼圖填充。元格可被一組貼圖填充。 圖圖7-14 tiledlayer7-14 tiled
28、layer 每個貼圖都被賦予一個唯一的索引號。每個貼圖都被賦予一個唯一的索引號。 除了靜態(tài)貼圖外,開發(fā)者同樣能夠定義一除了靜態(tài)貼圖外,開發(fā)者同樣能夠定義一系列動態(tài)貼圖(系列動態(tài)貼圖(animated tiles)。)。 動態(tài)貼圖允許開發(fā)者能非常容易地改動態(tài)貼圖允許開發(fā)者能非常容易地改變一組單元格的外觀。變一組單元格的外觀。 圖圖7-15 tiledlayer7-15 tiledlayer背景背景 圖圖7-16 tiledlayer7-16 tiledlayer動態(tài)貼圖動態(tài)貼圖 2 2layermanagerlayermanager layermanager管理一系列的管理一系列的layer。
29、可視窗口(可視窗口(view window)控制著可視)控制著可視區(qū)域及其在區(qū)域及其在layermanager 的坐標(biāo)系統(tǒng)中的坐標(biāo)系統(tǒng)中的位置。的位置。 圖圖7-17 7-17 相對原點相對原點 paint(graphics, int, int)方法包含一個方法包含一個(x,y)坐標(biāo),控制可視窗口在屏幕中的顯示坐標(biāo),控制可視窗口在屏幕中的顯示位置。位置。 圖圖7-18 7-18 控制可視窗口顯示位置控制可視窗口顯示位置 為了添加一個為了添加一個layer,使用,使用append()方方法向這個法向這個layermanager 添加一個添加一個layer。 7.5 7.5 手機音效開發(fā)手機音效開
30、發(fā) 現(xiàn)在能播放音樂的手機已經(jīng)是很常見現(xiàn)在能播放音樂的手機已經(jīng)是很常見的了,同時手機游戲也需要聲音來增加動的了,同時手機游戲也需要聲音來增加動感效果,所以手機音效也成為了開發(fā)熱點。感效果,所以手機音效也成為了開發(fā)熱點。 j2me針對多種媒體格式,提供了一針對多種媒體格式,提供了一套播放接口,那就是:套播放接口,那就是:mmapi(mobile media api)。)。 7.5.1 mmapi 7.5.1 mmapi體系結(jié)構(gòu)體系結(jié)構(gòu) 現(xiàn)在多媒體的格式很多,要順利地播現(xiàn)在多媒體的格式很多,要順利地播放這些不同格式的音樂,一種比較好的方放這些不同格式的音樂,一種比較好的方式就是把這些不同格式的數(shù)據(jù)都
31、轉(zhuǎn)換為統(tǒng)式就是把這些不同格式的數(shù)據(jù)都轉(zhuǎn)換為統(tǒng)一的格式,然后統(tǒng)一使用一個播放器接口一的格式,然后統(tǒng)一使用一個播放器接口類來播放。類來播放。 在在mmapi中,首先從數(shù)據(jù)源(如一個中,首先從數(shù)據(jù)源(如一個文件、一個捕獲裝置或一個流式服務(wù))上文件、一個捕獲裝置或一個流式服務(wù))上讀取媒體數(shù)據(jù)內(nèi)容后,然后傳輸給專門的讀取媒體數(shù)據(jù)內(nèi)容后,然后傳輸給專門的處理程序進(jìn)行處理。處理程序進(jìn)行處理。 處理過程主要是由處理過程主要是由datasource類和類和player類完成。類完成。datasource類的作用就是類的作用就是讀取和轉(zhuǎn)換多媒體數(shù)據(jù),讀取和轉(zhuǎn)換多媒體數(shù)據(jù),player類的作用類的作用就是播放這類數(shù)
32、據(jù)。就是播放這類數(shù)據(jù)。 然后提供一系列的播放、暫停、停止然后提供一系列的播放、暫停、停止等播放器相關(guān)功能,等播放器相關(guān)功能,datasource類和類和player類的工作過程如圖類的工作過程如圖7-19所示。所示。 圖圖7-19 7-19 數(shù)據(jù)流圖數(shù)據(jù)流圖 7.5.2 player 7.5.2 player接口接口 要使用要使用mmapi進(jìn)行音效開發(fā),首先進(jìn)行音效開發(fā),首先需要導(dǎo)入相關(guān)的開發(fā)包,例如:需要導(dǎo)入相關(guān)的開發(fā)包,例如: import javax.microedition.media.* 創(chuàng)建一個創(chuàng)建一個player對象有對象有3種不同的方式,種不同的方式,也就是用也就是用manag
33、er類的不同構(gòu)造方法,類的不同構(gòu)造方法,manager類一共有三個構(gòu)造方。類一共有三個構(gòu)造方。 (1)public static player createplayer (java.lang.string locator) throws java.io.ioexception, mediaexception (2)public static player createplayer (datasource source) throws java.io.ioexception, mediaexception (3) public static player createplayer (java.
34、io.inputstream stream, java. lang.string trpe) throws java.io.ioexception, mediaexception 這三個方法分別可以讀取指定路徑的這三個方法分別可以讀取指定路徑的數(shù)據(jù)源或者數(shù)據(jù)源或者datasource和和inpurstream類型類型的數(shù)據(jù)源,分別返回一個的數(shù)據(jù)源,分別返回一個player,當(dāng)一個,當(dāng)一個player對象被創(chuàng)建以后,使用對象被創(chuàng)建以后,使用player接口的接口的start()方法就會盡可能快地啟動數(shù)據(jù)的播方法就會盡可能快地啟動數(shù)據(jù)的播放,當(dāng)數(shù)據(jù)播放完畢以后,放,當(dāng)數(shù)據(jù)播放完畢以后,player
35、會自動會自動關(guān)閉。關(guān)閉。 1 1unrealized unrealized 狀態(tài)狀態(tài) 2 2realizedrealized狀態(tài)狀態(tài) 3 3prefetchedprefetched狀態(tài)狀態(tài) 4 4startedstarted狀態(tài)狀態(tài) 5 5closedclosed狀態(tài)狀態(tài) 圖圖7-20 7-20 狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖 7.5.3 7.5.3 播放簡單音調(diào)播放簡單音調(diào) 聲音的高低叫音調(diào),也就是音符的頻聲音的高低叫音調(diào),也就是音符的頻率,率,j2me提供了對簡單音調(diào)播放的支持,提供了對簡單音調(diào)播放的支持,mmapi提供了一個提供了一個manager.playtone()方方法來播放音調(diào)。法來播放音
36、調(diào)。 使用使用manager.playtone(),需要指定三,需要指定三個參數(shù):音符、播放時間和聲音的大小。個參數(shù):音符、播放時間和聲音的大小。例如下面的代碼播放了一個例如下面的代碼播放了一個c4的音調(diào),的音調(diào),c4音調(diào)是由音調(diào)是由tonecontrol類的常量類的常量c4指定的。指定的。 7.5.4 7.5.4 播放歌曲播放歌曲 使用使用mmapi播放歌曲很簡單,主要是播放歌曲很簡單,主要是用用player的的createplayer構(gòu)造方法,只要指構(gòu)造方法,只要指定網(wǎng)絡(luò)地址,定網(wǎng)絡(luò)地址,player就會自動的下載歌曲就會自動的下載歌曲并播放,具體構(gòu)造方法如下。并播放,具體構(gòu)造方法如下。
37、public static player createplayer(string locator)throws ioexception,mediaexception 為了很好地控制歌曲的播放狀態(tài),需為了很好地控制歌曲的播放狀態(tài),需要要midlet程序?qū)崿F(xiàn)一個程序?qū)崿F(xiàn)一個playerlistener接口,接口,同時實現(xiàn)該接口中的同時實現(xiàn)該接口中的playerupdate()方法。方法。 public void playerupdate(player player,string event,object eventdate) 在在playerupdate方法里可以判斷播放方法里可以判斷播放的狀態(tài),
38、例如判斷播放是否結(jié)束可以用的狀態(tài),例如判斷播放是否結(jié)束可以用playerlistener.end_of_media進(jìn)行判斷。進(jìn)行判斷。 public void playerupdate(player player,string event,object eventdate) if(event = playerlistener.end_of_media) 為了提高播放效率,又不影響其他程為了提高播放效率,又不影響其他程序的運行,可以使用線程,只要實現(xiàn)序的運行,可以使用線程,只要實現(xiàn)runnable接口即可。接口即可。 如果想在播放過程中,對播放進(jìn)行暫如果想在播放過程中,對播放進(jìn)行暫?;蛘咄V沟炔?/p>
39、作,都要對播放器的各種停或者停止等操作,都要對播放器的各種狀態(tài)進(jìn)行判斷,狀態(tài)進(jìn)行判斷, 圖圖7-21 7-21 播放網(wǎng)絡(luò)資源播放網(wǎng)絡(luò)資源 7.5.5 7.5.5 控制音量控制音量 音量的控制可以使用音量的控制可以使用volumecontrol控控件接口,它允許設(shè)置音量的變化范圍是從件接口,它允許設(shè)置音量的變化范圍是從0100,其中,其中0表示靜音。表示靜音。 volumecontrol控件接口的使用很簡單,控件接口的使用很簡單,使用使用getlevel()方法得到當(dāng)前的音量級別,方法得到當(dāng)前的音量級別,也可以使用也可以使用setlevel()方法設(shè)置音量級別,方法設(shè)置音量級別,靜音使用靜音使用setmute()方法來設(shè)置,要判斷是方法來設(shè)置,要判斷是否靜音可以使用否靜音可以使用ismute()方法。方法。 具體獲得一個具體獲得一個volumecontrol控件的代控件的代碼如下:碼如下:volumecontrol volume = (volumecontrol) player
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)改造合同范本
- 2025年中國智能化節(jié)能裝置行業(yè)市場需求預(yù)測及投資戰(zhàn)略規(guī)劃報告
- 中介房子銷售合同范例
- 農(nóng)村電廠維修合同范本
- 業(yè)主委托拍攝合同范例
- 出售移動廠房合同范本
- 供應(yīng)發(fā)票合同范本
- 中國一次性注射器市場全面調(diào)研及行業(yè)投資潛力預(yù)測報告
- 產(chǎn)品外銷合同范本
- 冷庫銷售安裝合同范本
- 政治校本課程
- 川2020J146-TJ 建筑用輕質(zhì)隔墻條板構(gòu)造圖集
- (完整)讀歌詞猜歌名
- 八年級下開學(xué)第一課主題班會
- 初中英語人教版 八年級上冊 單詞默寫表 漢譯英
- pcs-9611d-x說明書國內(nèi)中文標(biāo)準(zhǔn)版
- GB/T 1634.1-2004塑料負(fù)荷變形溫度的測定第1部分:通用試驗方法
- 無人機航拍技術(shù)理論考核試題題庫及答案
- T∕CMATB 9002-2021 兒童肉類制品通用要求
- 工序勞務(wù)分包管理課件
- 暖通空調(diào)(陸亞俊編)課件
評論
0/150
提交評論