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