第14章-游戲開發_第1頁
第14章-游戲開發_第2頁
第14章-游戲開發_第3頁
第14章-游戲開發_第4頁
第14章-游戲開發_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十二章圖形圖像1.訪問圖片2.Tween動畫3.Frame動畫4.圖形的繪制5.通過Matrix實現動畫6.Shader類實現圖形特效7.圖像像素的操作5.通過Matrix實現動畫參考:Chapter12_Graphic_Matrix主要通過Matrix類實現,通過函數:setRotate()、setScale()、setTranslate()完成旋轉、縮放、平移5.通過Matrix實現動畫2〕在OnDraw函數中根據scale和angle創立新的圖片,并進行顯示matrix.reset();if(!isScale){ //旋轉Matrix matrix.setRotate(angle);}else{//縮放Matrixmatrix.setScale(scale,scale);}5.通過Matrix實現動畫2〕在OnDraw函數中根據scale和angle創立新的圖片,并進行顯示//根據原始位圖和Matrix創立新視圖Bitmapbm2=Bitmap.createBitmap(bm,0,0,w,h,matrix,true);//繪制新視圖canvas.drawBitmap(bm2,matrix,null);6.通過Shader類實現圖形的特殊效果參考:Chapter12_Graphic_Shader按上方向鍵

6.通過Shader類實現圖形的特殊效果按左方向鍵

按右方向鍵

7.圖像像素的操作參考:《Android應用開發揭秘》源碼\第5章\Examples_05_10

Android中,每個圖像像素通過一個4字節的整數來表示,分別是:Alpha、R、G、B7.圖像像素的操作

注意:必須按下一個按鍵,水波效果才會開始7.圖像像素的操作

Android中,每個圖像像素通過一個4字節的整數來表示,分別是:Alpha、R、G、BE.Bitmap2[pos2++]=Bitmap1[pos1++]&0xffff0000;去除綠色、藍色分量,只保存紅色、alpha分量第十三章OPENGL1.簡單2D圖形2.3D圖形3.紋理映射4.光照模型5.3D世界6.飄揚的旗幟7.立方體列表8.控制立方體9.粒子系統10.蒙版11.變形OPENGL提供了一些庫,編程中,利用這些庫文件,可通過調用指令的方式實現2D/3D圖像的顯示OpenGL〔全寫OpenGraphicsLibrary〕定義一個跨編程語言、跨平臺的編程接口的規格,它用于三維圖象〔二維的亦可〕。OpenGL是個專業的圖形程序接口,是一個功能強大,調用方便的底層圖形庫。Android系統提供了一個android.OpengGL包,專門用于3D圖形第十四章游戲開發1.View類的開發框架2.SrufaceView類的開發框架主要是通過canvas在view上進行繪制需要的東西前面學習過通過layout實現界面的布局但是,游戲不是通過layout來實現界面控制的根本思路:在view類中,通過Ondraw()完成界面的繪制,主要通過canvas和paint來實現1.View類的開發框架《Android應用開發揭秘》\第5章\Examples_05_01提示出錯:1〕修改屬性為1.5在注冊文件AndroidManifest.xml中修改SDK版本:<uses-sdkandroid:minSdkVersion="3"/>效果:出現一個顏色不斷變化的矩形,并且可以通過鍵盤上下鍵控制矩形上下移動1.View類的開發框架分析程序:有兩個文件,一個view的類,一個Activity類定義一個繼承于view的GameView類,在Activity類中,通過setContentView(mGameView);實現界面顯示通過mGameView.invalidate();刷新界面,調用Ondraw()1.View類的開發框架2〕Activity01.java/*聲明GameView類對象*/privateGameView mGameView =null;/*實例化GameView對象*/this.mGameView=newGameView(this);//設置顯示為我們自定義的View(GameView)setContentView(mGameView);//開啟線程newThread(newGameThread()).start();1.View類的開發框架2〕Activity01.java線程中實現刷新,調用invalidate(),調用OnDraw()Handler myHandler =newHandler(){ //接收到消息后處理

publicvoidhandleMessage(Messagemsg) {switch(msg.what) { caseActivity01.REFRESH: mGameView.invalidate(); break; } super.handleMessage(msg);} };1.View類的開發框架3)GameView.javaonDraw()函數中,顯示矩形,并控制矩形的位置和顏色switch(miCount%4){ case0: mPaint.setColor(Color.BLUE); break; case1: mPaint.setColor(Color.GREEN); break; case2: mPaint.setColor(Color.RED); break; case3: mPaint.setColor(Color.YELLOW);break; default:mPaint.setColor(Color.WHITE);break;}miCount%4:效果0-3循環1.View類的開發框架3)GameView.javacanvas.drawRect((320-80)/2,y,(320-80)/2+80,y+40,mPaint);繪制矩形,矩形的兩個角點:〔120,y〕,(200,y+40)1.View類的開發框架4〕通過鍵盤事件控制矩形的y值publicbooleanonKeyUp(intkeyCode,KeyEventevent){switch(keyCode){ //上方向鍵

caseKeyEvent.KEYCODE_DPAD_UP: mGameView.y-=3; break; //下方向鍵

caseKeyEvent.KEYCODE_DPAD_DOWN: mGameView.y+=3; break; } returnfalse; }1.View類的開發框架5〕修改程序A.修改控制移動的增量mGameView.y-=30;mGameView.y+=30;效果:移動速度明顯增加1.View類的開發框架5〕修改程序B.改變控制移動的按鍵caseKeyEvent.KEYCODE_DPAD_LEFT: mGameView.y-=3;效果:左鍵向上移動1.View類的開發框架5〕修改程序C.改變顏色變化的快慢switch(miCount/25){ case0:mPaint.setColor(Color.BLUE); break; case1: mPaint.setColor(Color.GREEN); break; case2: mPaint.setColor(Color.RED); break; case3: mPaint.setColor(Color.YELLOW); break; default:mPaint.setColor(Color.WHITE);break;}效果:閃爍明顯變慢1.View類的開發框架5〕修改程序D.改變閃爍顏色1.View類的開發框架switch(miCount/25){ case0:mPaint.setColor(Color.GRAY); break; case1: mPaint.setColor(Color.WHITE); break; case2: mPaint.setColor(Color.CYAN); break; case3: mPaint.setColor(Color.BLACK); break; default:mPaint.setColor(Color.WHITE);break;}6〕控制背景:

1.View類的開發框架6〕控制背景:A.設置背景顏色gameview中:publicGameView(Contextcontext,Drawabled){ super(context); this.setBackgroundColor(Color.BLUE);}1.View類的開發框架6〕控制背景:B.設置背景為特定圖片在gameview中,可以直接獲取drawable的圖片資源publicGameView(Contextcontext){super(context);Resourcesr=getResources();Drawabled=r.getDrawable(R.drawable.zs);this.setBackgroundDrawable(d);}1.View類的開發框架6〕控制背景:B.設置背景為特定圖片

注意:如果復制一個圖片文件到drawable目錄需要buildproject后,R資源中才能使用這個圖片1.View類的開發框架與view不同之處,不用通過線程來更新,但在繪制之前必須使用LockCanvas來鎖定畫布《Android應用開發揭秘》源碼\第5章\Examples_05_022.SrufaceView類的開發框架1〕Activity01.java/*創立GameSurfaceView對象*/mGameSurfaceView=newGameSurfaceView(this);//設置顯示GameSurfaceView視圖setContentView(mGameSurfaceView);2.SrufaceView類的開發框架沒有通過線程來控制2〕GameSurfaceView.javaA.繼承于SurfaceView2.SrufaceView類的開發框架publicclassGameSurfaceViewextendsSurfaceView implementsSurfaceHolder.Callback,RunnableB.構造函數中//實例化SurfaceHoldermSurfaceHolder=this.getHolder();//添加回調mSurfaceHolder.addCallback(this);2〕GameSurfaceView.javaC.run()完成循環更新2.SrufaceView類的開發框架publicvoidrun(){while(mbLoop) { try { Thread.sleep(200); } catch(Exceptione) {} synchronized(mSurfaceHolder) { Draw();} } }D.Draw()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論