![第14章-游戏开发_第1页](http://file4.renrendoc.com/view10/M00/3B/2C/wKhkGWWXOhCAcF-_AAD78TiAj9A503.jpg)
![第14章-游戏开发_第2页](http://file4.renrendoc.com/view10/M00/3B/2C/wKhkGWWXOhCAcF-_AAD78TiAj9A5032.jpg)
![第14章-游戏开发_第3页](http://file4.renrendoc.com/view10/M00/3B/2C/wKhkGWWXOhCAcF-_AAD78TiAj9A5033.jpg)
![第14章-游戏开发_第4页](http://file4.renrendoc.com/view10/M00/3B/2C/wKhkGWWXOhCAcF-_AAD78TiAj9A5034.jpg)
![第14章-游戏开发_第5页](http://file4.renrendoc.com/view10/M00/3B/2C/wKhkGWWXOhCAcF-_AAD78TiAj9A5035.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章图形图像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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023二年级数学上册 六 测量第2课时 课桌有多长说课稿 北师大版
- 《1 负数 》(说课稿)-2023-2024学年六年级下册数学人教版
- 2024秋四年级语文上册 第六单元 第19课 一只窝囊的大老虎说课稿 新人教版001
- 代销材料合同范例
- 路堑紫穗槐种植施工方案
- 5《守株待兔》说课稿-2024-2025学年语文三年级下册统编版
- 庆城硅pu跑道施工方案
- 5《一个豆荚里的五粒豆》说课稿-2024-2025学年四年级上册语文统编版
- 京东店铺运营合同范例
- 住宅划地出售合同范本
- 高空作业车日常施工方案
- 材料力学之材料疲劳分析算法:S-N曲线法:疲劳分析案例研究与项目实践.Tex.header
- 2024(新高考2卷)英语试题详解解析 课件
- 天津2024年天津市规划和自然资源局所属事业单位招聘笔试历年典型考题及考点附答案解析
- 中国医美行业2024年度洞悉报告-德勤x艾尔建-202406
- 2024年江苏经贸职业技术学院单招职业适应性测试题库一套
- 药用植物种植制度和土壤耕作技术
- 《火力发电企业设备点检定修管理导则》
- 2024年呼和浩特职业学院单招职业技能测试题库及答案解析
- 摊位安全责任书
- 重庆市渝北区2024年八年级下册数学期末统考模拟试题含解析
评论
0/150
提交评论