位置: 编程技术 - 正文

android游戏开发的技术实现分析(Android游戏开发教程)

编辑:rootadmin

推荐整理分享android游戏开发的技术实现分析(Android游戏开发教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Android游戏开发书籍,Android游戏开发实训总结,Android游戏开发pdf,Android游戏开发读后感,Android游戏开发教程,android游戏开发框架,Android游戏开发实训总结,Android游戏开发教程,内容如对您有帮助,希望把文章链接给更多的朋友!

在android开发中,你可能会有想要开发一个小游戏的冲动,那么用android来开发游戏如何实现呢?幸运的是,google提供了一些已经开发好的游戏实例.我们从他的两个游戏实例入手来探究探究.

对于轻量级的小游戏,其游戏的核心显示内容,我们可以写一个自己的view来实现!然后以一定的频率刷新这个view,我们调用view的invalidate()来实现.具体的我们来看看一个大家常见的游戏:Snake(贪吃蛇),下面来分析一些实现这个游戏的关键代码.

和其他app一样,Snake也由一个Activity开始的,同样的通过setContentView(R.layout.snake_layout);这行代码来确定显示内容的布局,这里有必要看看这个布局文件的内容(如下):

上面的代码,我们首先需要注意的是这个布局文件采用了merge来限定:因为我们的布局是framelayout,所以这里就采用了merge,因为任何加入activity的view的父groupview都是framelayout.

这里我们重点关注的时SnakeView,这个view就是实现这个游戏的核心.这里需要注意这一行代码:app:tileSize="dp".这是SnakeView自己定义的一个属性,用于定义贪吃蛇的大小.能够这样使用,你需要先在attrs.xml里面为SnakeView定义这样的属性,看看这里时如何定义的:

你肯定会奇怪,怎么是TileView呢? 其实SnakeView是TileView的子类,而TileView是view的子类.

所以我们重点来看看SnakeView的实现.(贪吃蛇的具体实现就不设计,这里只是介绍一个游戏开发的实现核心).其实游戏的动画效果就是反复的调用invalidate来促使view重现绘制,通过重写View的onDraw(Canvas canvas)来实现.这样以来,当调用invalidate(),就会触发view自己回调onDraw(Canvas canvas),而游戏每一次需要显示的内容都由onDraw来绘制.

下面是定时刷新view的代码:

上面定义的是一个handle,该handle起到一个定时器的作用,每隔delayMillis这么长的时间,来更新update()需要下次绘制的内容,然后invalidate()来刷新.

android游戏开发的技术实现分析(Android游戏开发教程)

下面是他的onDraw的实现:

通过上面代码可以知道,其实就绘制了一些图片,这些图片按照一定的坐标就组成来一条蛇.所以每次只要mTileGrid里面的信息准确其绘制出的图像就是准确的.

对于像贪吃蛇/象棋等这样的轻量级游戏我们可以这么做,不过对于一些&#;斗类的游戏就不太实用了,当要绘制大量的图片资源/铃声资源的时候就满足不了需要.这个时候我们需要用到一个特殊的view:SurfaceView

还好,google给我提供了一个实例:JetBoy.下面我们来看看如何使用SurfaceView.

(1)首先,你写的SurfaceView需要实现这个接口SurfaceHolder.Callback, 其目的是我们需要获取我们的SurfaceView的状态变化(创建成功/大小变化/销毁).如下代码:

(2) 我们需要得到 SurfaceView的SurfaceHolder,并且使用SurfaceHolder.Callback,你需要在构造方法里面完成,如下代码:

(3)由于,我们需要绘制大量的内容,所以我们一般需要开启一个线程来做这些工作.下面来详细介绍其中缘由: 我们通过上面获得的SurfaceHolder就可以获得这个SurfaceView的Canvas,所以只要我们用这个Canvas来绘制我们需要的东西即可,这些工作我们都是在我们定义的线程里面来完成的,当然这一切都应该在SurfaceView创建完成以后(surfaceCreated(SurfaceHolder arg0) 回调以后)才能完成.下面来看thread里面的run里面核心代码:

上面代码通过mSurfaceHolder.lockCanvas(null);来获取我们SurfaceView的canvas, 然后绘制内容,绘制完成指向这行代码mSurfaceHolder.unlockCanvasAndPost(c);

(4)所以我们需要在surfaceCreated的时候开始我们的游戏:

在surfaceDestroyed的时候结束我们的线程:

其实都很简单的大家使用一下就明白的.

Android物理小球在游戏中的应用 Android游戏设计中常常用一些数学物理知识,最具代表性的就是小球的运动。这篇文章将带着大家一起学习一个典型的小球运动程序。程序效果图:程序

标签: Android游戏开发教程

本文链接地址:https://www.jiuchutong.com/biancheng/371304.html 转载请保留说明!

上一篇:Android游戏之文件读写类和绘图类设计(安卓游戏报告)

下一篇:android图像处理系统框架(安卓专业图片处理软件)

  • 验收入库材料结转怎么写
  • 自产和外购的视频区别
  • 收到备用金的会计分录怎么写
  • 建筑业确认收入的时间是按进度计量么
  • 记账软件收费吗
  • 财务发票报销时限是多久
  • 个体户经营税收政策
  • 会计核算过程中的错误分析
  • 公司交的物业费入什么科目
  • 科技成果转化奖励
  • 物业公司收到开发代付物业管理费怎么做账
  • 房屋租赁发票是什么意思
  • 技术服务合同增值税税率3%
  • 增值税专票的收款人必须是个人嘛
  • 关于增值税普通发票开票信息填写要求
  • 外籍人员的个人所得税怎么算
  • 金税四期什么时候结束
  • 公司房租可以抵多少税
  • 专用发票离线限额是什么意思
  • 坏账损失的账务处理办法
  • 分期收款销售的核算中发出商品时借什么账户
  • 个体户生产所得税怎么计算
  • 合伙企业收到投资款要缴纳印花税吗
  • 公司食堂支出计入什么科目
  • win11任务栏没有输入法图标
  • 收到水电费的增值税普通发票怎么做账
  • 企业转让股票交什么税费呢
  • php开源软件
  • 个人所得税专项扣除子女教育标准
  • 外贸企业有哪些公司青岛
  • 月入2万的10个小生意低成本
  • 会计核算中 制度有哪些
  • 在收付实现制下,预付的下季度报刊杂志订阅费
  • 社保缴费基数差1000一般差多少?
  • 差额征税收到雇主责任险进项发票能抵扣吗
  • 资产等于负债加所有者权益
  • 微信小程序云开发控制台
  • nginx搭建静态资源服务器
  • 利润表用处
  • java中的泛型的好处
  • python编程快速上手pdf百度云
  • 你要和我一起爬山吗
  • 货币资金包括哪些方面
  • 出租改自用房产税
  • 个人申请给公司账户转账
  • 有销项无进项怎么处理
  • 本年利润有余额是什么意思
  • 个体工商户季度超过9万怎么交税
  • 代理费属于
  • 定期定额征收和核定征收哪个好
  • 小规模纳税人补开发票如何申报
  • 小规模纳税人的增值税计入成本吗
  • 应付账款不需要支付了会计怎么处理
  • 企业基建工程
  • 平销返利是销售折扣吗
  • 事业单位劳务派遣工能长期干下去吗
  • 员工外面有自己的公司
  • 只有进项税额没有销项税额怎么结转
  • 福利费可以计入销售费用吗
  • 个体户员工要签劳动合同吗
  • 新公司成立建账流程
  • 车子报废车子怎么处理
  • mysql数据库使用教程
  • mysql数据库随机取数据
  • linux显示日期格式命令是
  • Node.js connect ECONNREFUSED错误解决办法
  • linux中xargs的含义
  • python os.path模块
  • node一次执行多个文件
  • python下读取公私钥做加解密实例详解
  • javascript的promise
  • 统计一组数据各个数字出现的次数
  • vue实现数据导出为excel
  • Android自定义控件高级进阶与精彩实例
  • js水平垂直居中怎么设置
  • 中国税务主旨是什么?
  • 红字专用发票进什么科目
  • 如何查询公司的电话号码
  • 岗位练兵的作用
  • 公司买车购置税怎么做账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设