日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺談Android游戲開(kāi)發(fā)基礎(chǔ)和經(jīng)驗(yàn)

Android游戲開(kāi)發(fā)基礎(chǔ)和經(jīng)驗(yàn)是本文要介紹的內(nèi)容,主要是來(lái)了解并學(xué)習(xí)Android游戲開(kāi)發(fā)的內(nèi)容實(shí)例,具體關(guān)于Android游戲開(kāi)發(fā)內(nèi)容的詳解來(lái)看本文。

目前創(chuàng)新互聯(lián)已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、鳳翔網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

做一個(gè)類似俄羅斯方塊的android游戲開(kāi)發(fā),游戲完全又觸屏來(lái)實(shí)現(xiàn)還有音樂(lè)播放等等一些基本的功能,游戲是基于 android sdk1.6完成。由于初識(shí)android,這個(gè)游戲也是本人第一個(gè)android游戲開(kāi)發(fā),所以還有很多不足,這里只是想分享一下在開(kāi)發(fā)過(guò)程中一些自己總結(jié)的經(jīng)驗(yàn)和小技巧,希望對(duì)新手有所幫助,高手也請(qǐng)不吝賜教。

一、首先我們應(yīng)該知道android游戲開(kāi)發(fā)的一些基本框架。

Android游戲開(kāi)發(fā)中首先是View類開(kāi)發(fā)框架。在Android游戲開(kāi)發(fā)中,任何一個(gè)View類都只需要重寫(xiě)onDraw方法來(lái)實(shí)現(xiàn)界面顯示。游戲的核心是不斷的繪圖和刷新界面,在 Android中最常用的方法是利用Handler來(lái)實(shí)現(xiàn)UI線程的更新,也可以直接在run方法中使用postInvalidate()方法在線程中更新界面。其次,是SurfaceView類開(kāi)發(fā)框架。

當(dāng)需要開(kāi)發(fā)復(fù)雜的游戲,而且對(duì)程序的執(zhí)行效率很高時(shí),View類就不能滿足需求了,這是必須用 SurfaceView類進(jìn)行開(kāi)發(fā),這也是主流開(kāi)發(fā)框架。在使用時(shí)需要對(duì)其進(jìn)行創(chuàng)建、銷毀,情況改變時(shí)進(jìn)行監(jiān)視,這就要實(shí)現(xiàn) SurfaceHOlder.Callback接口,如果要對(duì)被繪制的花布進(jìn)行裁減,控制其大小時(shí)都需要使用SurfaceHOlder來(lái)完成處理。在程序中,SurfaceHOlder對(duì)象需要通過(guò)getHolder方法來(lái)獲得,同時(shí)還需要addCallback方法來(lái)添加“回調(diào)函數(shù)”。

例如下面一個(gè)簡(jiǎn)單的SurfaceView類框架:

 
 
  1. public class GameSurfaceView extends SurfaceView implements SurfaceHolder.Callback,Runnable {  
  2. SurfaceHolder mSurfaceHolder = null;  
  3. public GameSurfaceView(Context context) {  
  4. super(context);  
  5. mSurfaceHolder = this.getHolder();  
  6. mSurfaceHolder.addCallback(this);  
  7. this.setFocusable(true);  
  8. }  
  9. public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){  
  10. }  
  11. public void surfaceCreated(SurfaceHolder holder ){  
  12. new Thread(this).start();  
  13. }  
  14. public void surfaceDestroyed(SurfaceHolder holder){  
  15. }  
  16. public void run(){  
  17. while (true){  
  18. try{  
  19. Thread.sleep(1000);  
  20. }  
  21. catch(Exception e){  
  22. }  
  23. synchronized(mSurfaceHolder){  
  24. Draw();  
  25. }  
  26. }  
  27. }  
  28. private void Draw() {  
  29. Canvas canvas= mSurfaceHolder.lockCanvas();  
  30. ......  
  31. mSurfaceHolder.unlockCanvasAndPost(canvas);  
  32. }  

然后在activity類中 :setContentView(GameSurfaceView的對(duì)象)。

二、游戲開(kāi)發(fā)中常用到的基本類

Android游戲開(kāi)發(fā)中通過(guò)graphics類來(lái)顯示2D圖形,graphics中包括了Canvas(畫(huà)布)、Paint(畫(huà)筆)、Color(顏色)、Bitmap(圖片)等常用類。

例如繪制字符串用canvas類的drawText方法來(lái)實(shí)現(xiàn),drawRect用來(lái)繪制矩形,設(shè)置透明度可以用paint類的setAlpha,同時(shí) Color.rgb方法可以直接獲得整形數(shù)值代表的顏色。此外在繪制圖片時(shí)應(yīng)該首先從資源文件中裝載圖片,然后才能繪制到屏幕上去。具體代碼如下:Bitmap mypic = null; mypic=((BitmapDrawable)getResources().getDrawable(R.drawable.pic)).getBitmap(); Canvas canvas = new Canvas(); canvas.drawBitmap(mypic,x,y,null);

三、關(guān)于自適應(yīng)屏幕分辨率的問(wèn)題

Android游戲開(kāi)發(fā)中每款手機(jī)分辨率的不同注定是程序員開(kāi)發(fā)游戲必須考慮的問(wèn)題,怎樣才能寫(xiě)一個(gè)程序而達(dá)到可以在不同分辨率的機(jī)子上運(yùn)行良好,這將是決定一個(gè)游戲好壞的重要因素之一。在游戲資源res下有三個(gè)和圖片存儲(chǔ)有關(guān)的文件夾:drawable-hdpi、drawable-mdpi、drawable-ldpi。

drawable-hdpi里面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854),drawable-mdpi里面存放中等分辨率的圖片,如HVGA (320x480),drawable-ldpi里面存放低分辨率的圖片,如QVGA (240x320),系統(tǒng)會(huì)自動(dòng)根據(jù)機(jī)器的分辨率來(lái)分別到這幾個(gè)文件夾里面去找對(duì)應(yīng)的圖片。當(dāng)然,除了準(zhǔn)備好幾組不同分辨率的圖片以外,在代碼中圖片坐標(biāo)和觸屏事件的坐標(biāo)都要靈活的處理,這樣才能實(shí)現(xiàn)一個(gè)程序多機(jī)型運(yùn)行的目標(biāo)。

 
 
  1. DisplayMetrics dm = new DisplayMetrics();  
  2. getWindowManager().getDefaultDisplay().getMetrics(dm);  
  3. int screenWidth = dm.widthPixels;  
  4. int screenHeight = dm.heightPixels; 

通過(guò)以上代碼可以獲得當(dāng)前機(jī)型的屏幕像素,然過(guò)比列換算可以實(shí)現(xiàn)代碼中坐標(biāo)的靈活應(yīng)用。

四、如何鎖定屏幕是橫屏還是豎屏

一款游戲通常不會(huì)設(shè)計(jì)成橫屏豎屏都可玩,會(huì)固定成橫屏或豎屏。Android游戲開(kāi)發(fā)中只需在AndroidManifest.xml里面配置一下就可以了,加入這一行

 
 
  1. android:screenOrientation="landscape" 

例如(landscape是橫向,portrait是縱向)。

五、view與view之間的跳轉(zhuǎn)

Android游戲開(kāi)發(fā)中一個(gè)游戲不會(huì)只有一個(gè)view,比如歡迎動(dòng)畫(huà),游戲畫(huà)面,菜單頁(yè)面等等,如何實(shí)現(xiàn)它們之間的跳轉(zhuǎn),這里有一個(gè)方法,就是用Handler類實(shí)現(xiàn)。直接看代碼:

 
 
  1. Handler myHandler = new Handler(){  
  2. public void handleMessage(Message msg){  
  3. if(msg.what == 1){  
  4. //控制頁(yè)面的顯示...  
  5. }  
  6. if(msg.what == 2){  
  7. //控制頁(yè)面的顯示...  
  8. }  
  9. }  
  10. }; 

然后用:myHandler.sendEmptyMessage(1)來(lái)實(shí)現(xiàn)切換。

小結(jié):淺談Android游戲開(kāi)發(fā)基礎(chǔ)和經(jīng)驗(yàn)的內(nèi)容介紹完了,希望通過(guò)Android游戲開(kāi)發(fā)內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助!


當(dāng)前文章:淺談Android游戲開(kāi)發(fā)基礎(chǔ)和經(jīng)驗(yàn)
鏈接URL:http://m.5511xx.com/article/cdedisi.html