- 相關(guān)推薦
開發(fā)手機(jī)游戲心得
上一次,我主要聊了一下當(dāng)前手機(jī)游戲開發(fā)的平臺(tái)選擇和開發(fā)環(huán)境的安裝,也具體的談了談開發(fā)J2ME程序的簡(jiǎn)
單入門方法。由于當(dāng)前在手機(jī)上做游戲開發(fā)的大部分同志們用的都是J2ME,所以朋友們又催我繼續(xù)深入談一談
J2ME的開發(fā)技巧。本人所學(xué)甚淺,許多地方也都只是觸及皮毛,因此只能簡(jiǎn)單的談?wù)勎以谑謾C(jī)游戲的開發(fā)中碰
到的一些問題和我個(gè)人采用的解決方案。另外我把平時(shí)在論壇里收集到的部分技巧提供給大家以作參考,這里
特別感謝那些無私奉獻(xiàn)自己知識(shí)的人們。如果在文章中存在什么錯(cuò)誤,還請(qǐng)各位老鳥海涵。希望我這篇文章能
起到一點(diǎn)拋磚引玉的作用吧。
開發(fā)技巧這個(gè)東西是頗不好談的。還記得我最早學(xué)習(xí)J2ME的時(shí)候,曾經(jīng)在SUN的網(wǎng)站上看到過一篇文章,題目是
《如何提高J2ME程序的效率》,作者口氣強(qiáng)烈的要求j2me代碼"寸土寸金",仿佛令我回憶起了當(dāng)年在單片機(jī)上
的編程,其中有幾個(gè)觀點(diǎn)到現(xiàn)在還記得,比如不到萬不得已不要?jiǎng)?chuàng)建新的類,限制使用接口數(shù)量,還有要縮短
變量或函數(shù)名稱等等...我剛開始照著這個(gè)那個(gè)規(guī)范編程的時(shí)候,反而在許多地方束縛了自己,搞的這也不好做
,那也不好辦。呵呵,這大概就是盡信書不如無書吧。所以,我在聊技巧的時(shí)候不會(huì)給大家設(shè)置很多條條框框
,只講一下對(duì)某個(gè)問題通常的解決方法,希望能對(duì)大家有一點(diǎn)幫助。再次感謝那些在網(wǎng)上和論壇上給我提供過
幫助的朋友們。
游戲貼圖
說起來千頭萬緒,不如就從最常用的貼圖技巧開始說起吧。
MIDP手機(jī)程序的標(biāo)準(zhǔn)圖片格式是PNG(便攜式網(wǎng)絡(luò)圖片格式)。這里值得注意的是,不同的手機(jī)平臺(tái)對(duì)于圖片的要
求也滿"挑食"的,同樣是PNG格式卻不一定適用于所有平臺(tái)。我就碰到過這樣的情況,利用WinXP自帶畫圖板生
成的PNG格式圖片,在WTK的標(biāo)準(zhǔn)模擬器上可以正常顯示,到了西門子模擬器上卻怎么也顯示不出來。經(jīng)過一番
折騰,我在Photoshop中重新生成了新的PNG格式圖片后才順利的顯示出。網(wǎng)上的一些朋友也曾問我,為什么在
模擬器上運(yùn)行正常的圖片在真實(shí)設(shè)備上卻無法顯示。我也只能對(duì)他說多換幾種生成圖片的工具試試看嘍。另外
,因?yàn)閳D片資源會(huì)占用較大空間,所以應(yīng)該盡量保證其尺寸小,數(shù)量少。用不同的編輯工具存儲(chǔ)PNG位圖時(shí),其
文件的大小會(huì)有很大的不同,你可以嘗試多使用幾種工具,選擇其中存儲(chǔ)最小的來使用。在這里我推薦一個(gè)工
具:Image Optimizer。它可以在不影響圖象品質(zhì)的前提下將圖象減肥,最高可減少50%以上,真的很神奇呦J
要把圖片加載到你的應(yīng)用程序中,需要調(diào)用Image.createImage()這個(gè)函數(shù),并且需要做相關(guān)的異常處理,所
以我一般會(huì)在MIDlet中定義一個(gè)工具函數(shù),LoadImage()
具體代碼如下:
//加載圖片
public Image LoadImage(String path)
{
try
{
return Image.createImage(path); //成功則返回圖片對(duì)象
}
catch(Exception e)
{
e.printStackTrace(); //不成功則打印錯(cuò)誤信息并返回空值
return null;
}
}
如果有人問我,jar中什么是最占地方的?什么是最讓你頭疼的?我當(dāng)然會(huì)毫不猶豫地說是圖片,是PNG圖片了
。但是一個(gè)好的游戲又怎能少得了那些精美的圖片呢?一個(gè)經(jīng)常使用的竅門是將許多的圖片文件合并到一個(gè)圖
片文件中來,這樣可以在總體上減小將圖片占用的空間。最有代表性的例子就是精靈動(dòng)畫了
在文件中載入這類大圖像后,可以采用以下的方法來繪出動(dòng)畫的各個(gè)幀
g.setClip(x, y, FRAME_WIDTH, FRAME_HEIGHT);
g.drawImage(fiveMenImage, x - FRAME_WIDTH * frameNumber, y, Graphics.TOP | Graphics.LEFT);
其中 x,y 為您繪圖的起始坐標(biāo),F(xiàn)RAME_WIDTH和FRAME_HEIGHT為大圖像的寬度和高度,frameNumber值由0
-7的循環(huán)。這樣你就可以制造出一幅精靈正在行走的動(dòng)畫了。但要注意,如果還有其他的圖片需要繪制,請(qǐng)重
置你的剪輯窗口。
此外,當(dāng)然是地圖的繪制了
我們的大地圖,通常是由許多的小塊拼出來的,并會(huì)用一個(gè)數(shù)組來保存地圖各個(gè)位置的地形和狀態(tài),然后統(tǒng)一
的在paint方法中刷出整張地圖來。
實(shí)例代碼如下:
HouseVector = new Vector(); //設(shè)置一個(gè)動(dòng)態(tài)數(shù)組存放截下來的圖片
Image ImageTemp = null; //存放大圖片
Graphics g1 = null;
try
{
ImageTemp = Image.createImage("/res/image/house.png"); //加載整張大圖片
}
catch(Exception exception) { }
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 4; j++)
{
Image image_element = Image.createImage(16, 16);//作為截圖的小圖片
[1] [2] [3] [4] 下一頁
相關(guān)專題:[手機(jī)]【開發(fā)手機(jī)游戲心得】相關(guān)文章:
手機(jī)游戲作文02-20
手機(jī)游戲作文02-20
游戲開發(fā)崗位職責(zé)03-17
游戲開發(fā)工程師崗位職責(zé)04-12
手機(jī)銷售心得11-24
手機(jī)培訓(xùn)心得05-09