成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談Android游戲開發基礎和經驗

移動開發 Android 游戲開發
Android游戲開發基礎和經驗是本文要介紹的內容,主要是來了解并學習Android游戲開發的內容實例,具體關于Android游戲開發內容的詳解來看本文。

Android游戲開發基礎和經驗是本文要介紹的內容,主要是來了解并學習Android游戲開發的內容實例,具體關于Android游戲開發內容的詳解來看本文。

做一個類似俄羅斯方塊的android游戲開發,游戲完全又觸屏來實現還有音樂播放等等一些基本的功能,游戲是基于 android sdk1.6完成。由于初識android,這個游戲也是本人第一個android游戲開發,所以還有很多不足,這里只是想分享一下在開發過程中一些自己總結的經驗和小技巧,希望對新手有所幫助,高手也請不吝賜教。

一、首先我們應該知道android游戲開發的一些基本框架。

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

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

例如下面一個簡單的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 canvasmSurfaceHolder.lockCanvas();  
  30. ......  
  31. mSurfaceHolder.unlockCanvasAndPost(canvas);  
  32. }  

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

二、游戲開發中常用到的基本類

Android游戲開發中通過graphics類來顯示2D圖形,graphics中包括了Canvas(畫布)、Paint(畫筆)、Color(顏色)、Bitmap(圖片)等常用類。

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

三、關于自適應屏幕分辨率的問題

Android游戲開發中每款手機分辨率的不同注定是程序員開發游戲必須考慮的問題,怎樣才能寫一個程序而達到可以在不同分辨率的機子上運行良好,這將是決定一個游戲好壞的重要因素之一。在游戲資源res下有三個和圖片存儲有關的文件夾:drawable-hdpi、drawable-mdpi、drawable-ldpi。

drawable-hdpi里面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854),drawable-mdpi里面存放中等分辨率的圖片,如HVGA (320x480),drawable-ldpi里面存放低分辨率的圖片,如QVGA (240x320),系統會自動根據機器的分辨率來分別到這幾個文件夾里面去找對應的圖片。當然,除了準備好幾組不同分辨率的圖片以外,在代碼中圖片坐標和觸屏事件的坐標都要靈活的處理,這樣才能實現一個程序多機型運行的目標。

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

通過以上代碼可以獲得當前機型的屏幕像素,然過比列換算可以實現代碼中坐標的靈活應用。

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

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

  1. android:screenOrientation="landscape" 

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

五、view與view之間的跳轉

Android游戲開發中一個游戲不會只有一個view,比如歡迎動畫,游戲畫面,菜單頁面等等,如何實現它們之間的跳轉,這里有一個方法,就是用Handler類實現。直接看代碼:

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

然后用:myHandler.sendEmptyMessage(1)來實現切換。

小結:淺談Android游戲開發基礎和經驗的內容介紹完了,希望通過Android游戲開發內容的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2013-05-21 11:24:07

Android游戲開發Sensor重力感應

2009-04-16 09:08:21

Oracle開發經驗

2009-03-11 09:33:11

Lotus開發Workflow

2011-03-31 09:55:59

Oracle數據庫開發技術

2010-01-26 17:42:14

Android浮點

2011-04-25 16:56:34

Greedy Bank游戲開發獨立開發者

2013-09-03 11:18:00

Android開發項目

2011-05-31 14:03:13

2011-07-22 13:37:32

2011-08-10 09:42:08

2011-12-12 13:58:11

TinyCoiOSAndroid

2011-07-28 10:01:19

IOS 內存優化

2009-07-15 09:42:56

MyEclipse使用

2011-07-12 17:26:02

PHPPython

2014-03-14 13:36:19

獨立游戲經驗

2015-09-06 13:26:41

HTML5游戲開發工具手游開發

2015-09-07 14:17:44

HTML5游戲開發工具

2015-09-06 09:51:02

html5開發經驗開發工具

2012-05-03 14:29:53

HTML5

2012-04-08 20:52:47

游戲開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区二区三区四区 | 成人午夜视频在线观看 | 91在线第一页 | 久久久夜 | 狠狠草视频 | 国产精品毛片无码 | 久久高清 | 欧美不卡一区 | 亚洲a在线视频 | 91亚洲国产成人久久精品网站 | 欧美久久久久久 | 波多野结衣电影一区 | 国产成人99久久亚洲综合精品 | 男人天堂社区 | 国产成都精品91一区二区三 | 亚洲国产精品网站 | 岛国av一区二区三区 | 天天干亚洲| 91麻豆精品国产91久久久更新资源速度超快 | 美女天堂| 亚洲精品久久久9婷婷中文字幕 | 九九九视频精品 | 热99在线 | av网站免费在线观看 | 91精品国产91久久久久久吃药 | 国产精彩视频 | 久久午夜视频 | 成人不卡视频 | 日韩成人av在线 | 精品在线一区 | 激情毛片| 色av一区二区 | 精品国产一区二区 | 综合久久久 | 免费在线a视频 | 亚洲综合网站 | 国产欧美精品区一区二区三区 | 亚洲xxxxx | 国产视频1区 | 一级女毛片 | 成人精品一区二区三区中文字幕 |