位置: 编程技术 - 正文

Android 游戏教程:让人物动起来(android 游戏平台)

编辑:rootadmin

推荐整理分享Android 游戏教程:让人物动起来(android 游戏平台),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于android 的游戏怎么开发,android制作游戏,android 手机游戏,安卓游戏教程,android游戏项目,android游戏开发教程,android游戏项目,android游戏项目,内容如对您有帮助,希望把文章链接给更多的朋友!

今天我们用zgf框架做一个人物运动的demo,这是个简单的例子代码不多功能简陋,通过这个例子可以学会用zgf框架加载游戏图片和实现逐帧动画,通过这些就可以让一张图片变成一段简单的动画。

一. 准备工作 首先我们要事先准备好要使用的人物动作图和地形图 这张是动作图,把它分割成个不同的动作,循环播放同一行的4个不同动作就可以让人物动起来了。二. 动画实现 按照 简单的android游戏框架——zgf 所述先搭建一个框架,接着编写如下类: 人物类Person主要代码如下:private int x; private int y; private int dist;//行走方向 private int spd;//行走速度 private boolean isMove; private Bitmap img; private int imgXId;//图片的横向切片编号 private int imgYId;//图片的纵向切片编号 private int actTime;//动画间隔时间 public Person(Context con,int x,int y) { //人物中心点 this.x=x; this.y=y; dist=Constants.DOWN; isMove=false; spd=2; img=GraphicUtil.ReadBitMap(con, R.drawable.bb); imgXId=0; imgYId=0; } public void draw(Canvas c, Paint p) { //图片的左上角坐标 int ix=x-Constants.PERSON_WIDTH/2; int iy=y-Constants.PERSON_HEIGHT/2; GraphicUtil.DrawClipById(c, p, Constants.PERSON_WIDTH, Constants.PERSON_HEIGHT, img, imgXId, imgYId, ix, iy); } public void act() { if(isMove) { if(actTime<Constants.ACT_TIME) actTime&#;&#;; else if(actTime>=Constants.ACT_TIME) actTime=0; imgXId=actTime*actTime/Constants.ACT_TIME; switch(this.dist) { case Constants.UP: y-=spd; imgYId=3; break; case Constants.DOWN: y&#;=spd; imgYId=0; break; case Constants.RIGHT: x&#;=spd; imgYId=2; break; case Constants.LEFT: x-=spd; imgYId=1; break; } //控制行走范围不超出屏幕 x=x<0?0:x; x=x>GameAct.GetDispW()?GameAct.GetDispW():x; y=y<0?0:y; y=y>GameAct.GetDispH()?GameAct.GetDispH():y; } } public void move(int dist) { this.dist=dist; this.isMove=true; } public void stop() { this.isMove=false; actTime=0; } 打开api文档,找到 com.zxx.commen.graphic.GraphicUtil 可以看到 ReadBitMap(java.lang.String src) 和 ReadBitMap(Context context, int resId) 两个方法,通过这两个方法可以获得bitmap对象,前一个方法是根据文件路径加载图片,后一个方法是根据资源id加载图片。 DrawClipById(Canvas c, Paint p, int cw, int ch, Bitmap file, int idX, int idY, int x, int y) 方法绘制切片,cw和ch是图片的切片宽度和高度,idX和idY是图像的横向和纵向编号。 接着绘制背景,新建BackMap类,主要代码如下: private Bitmap texture; public BackMap(Context con) { texture=GraphicUtil.ReadBitMap(con, R.drawable.texture); } public void draw(Canvas c, Paint p) { int imgX=0; int imgY=0; int wc=GameAct.GetDispW()/Constants.TILE_WIDTH; int hc=GameAct.GetDispH()/Constants.TILE_WIDTH; //将图像铺满屏幕 for(int i=0;i<wc;i&#;&#;) { for(int j=0;j<hc;j&#;&#;) { int x=i*Constants.TILE_WIDTH; int y=j*Constants.TILE_WIDTH; GraphicUtil.DrawClipById(c, p, Constants.TILE_WIDTH, Constants.TILE_WIDTH, texture, imgX, imgY, x, y); } } }

然后把它们在一个类里面实例化对象:

BackMap bm; Person per; int time=0; public Scene(Context con) { init(con); } private void init(Context con) { bm=new BackMap(con); int px=GameAct.GetDispW()-GameAct.GetDispW()/6; int py=GameAct.GetDispH()/6; per=new Person(con,px,py); } public void draw(Canvas c,Paint p) { bm.draw(c, p); per.draw(c, p); } public void act() { //人物逆时针行走 int dist=Constants.NONE; int timer=; if(time<timer) dist=Constants.LEFT; else if(time<2*timer) dist=Constants.DOWN; else if(time<3*timer) dist=Constants.RIGHT; else if(time<4*timer) dist=Constants.UP; else if(time>=4*timer) time=0; time&#;&#;; per.move(dist); per.act(); }

最后编写Game.java:

private Scene scene; public Game(Context con) { super(con); scene=new Scene(con); } @Override public void run(Context con, Canvas c, Paint p) { scene.draw(c,p); scene.act(); } Android 游戏教程:让人物动起来(android 游戏平台)

完成,运行效果如下:

通过以上代码实现了逐帧动画的播放,很简单是不是?

源代码下载 现在动画是实现了,但是还不能自己控制,下一篇的内容将会是关于触屏控制和虚拟键盘。

我是如何从0开始,在天里完成一款Android游戏开发的 – Part 2 – 第3至第5天 第3天:一个新的游戏点子在网上泡Android相关论坛,找点子的时候,我看到了《RevengeoftheTitans》的一则广告。有着复古图像和漂亮动画的酷游戏。我也能

android计算器 主类:packagecom.bn.es2b;//包名importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importandroid.view.View.OnClick

我是如何从0开始,在天里完成一款Android游戏开发的 – Part3 – 第6至第8天 第6天:第一批外星人和屏幕方向好了,现在有了一些复古风的外星人它们正在到处飞。抱歉,暂时还没有demo。这款Andriod游戏目前只有.apk式的安装包。

标签: android 游戏平台

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

上一篇:安卓开发学习路线(安卓开发教学视频)

下一篇:我是如何从0开始,在23天里完成一款Android游戏开发的 – Part 2 – 第3至第5天(如何从0开始赚钱)

  • 建筑业购买材料计入什么科目
  • 利润表里面的所得税
  • 教育培训行业是干什么的
  • 兼营和混合销售的联系
  • 投资款转账没备案怎么办
  • 机器配件属于什么报销项目
  • 公共绿地绿化
  • 电梯折旧费如何分摊
  • 服务费增值税专用发票税点
  • 产权转移书据印花税是双方交吗
  • 生产共同费用每个月都有摊销吗?
  • 公司团建收取员工费用
  • 建筑工程伙食费包括什么
  • 教育费附加计算公式
  • 公司的净资产怎么看
  • 待认证发票后面需要做附件吗
  • 生产企业开具加工费发票的问题
  • 失控发票进项税转出申报怎么填
  • 对方不开票
  • 所得税季报总资产是什么
  • 分期收款什么是分期还款
  • 跨年度的房租发票怎么做账
  • 购买商品未入库
  • Win11文件资源管理器将更新
  • 电脑开机时进入bios界面快捷键
  • win10蓝牙无法连接,有解决方法吗
  • 视同销售收入税法处理
  • 转让存货属于什么收入
  • 一般纳税人简易计税会计分录
  • Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
  • 应收账款和应付账款都是负数
  • 一般纳税人和小微企业的区别
  • 投资入股的会计处理
  • 物流公司修理班的管理有那些书
  • 处置固定资产科目
  • 本月应付电费400元,下月支付
  • 小程序渲染是什么意思
  • 收到增值税收入423300,款项已存入国库
  • 投稿网址打不开
  • 循环语句例题及解析
  • 固定资产的财务业绩是什么意思啊
  • 工程结算是含有增值税吗
  • 应收账款余额百分比法怎么算
  • mysql批量新增字段
  • 采购成本和销售成本谁影响利润
  • 车辆购置税相关法律规定
  • 列入固定资产的标准
  • 有限合伙企业中谨慎有限合伙人的应当
  • 制造费用需要本年累计吗
  • 招标代理公司用哪个版本什么意思
  • 微信支付宝收入支出怎么做流水账
  • 锅炉设备销售
  • 先开票后发货的会计分录
  • 验资 银行
  • 年度报告应包括哪些
  • 利润表的编制方法和步骤实操
  • linux 添加ipv6路由
  • centos6.5共享文件夹
  • 在unix系统中采用的页面置换
  • 用u盘装系统怎么操作步骤
  • windows7问题解决方案
  • 苹果电脑安装了双系统怎么恢复苹果系统
  • win7旗舰版提示不是正版
  • caddll丢失
  • 双系统其中一个系统无法开机
  • 怎么从win8装回win7
  • pm2使用手册
  • NGUI带位置图标的拖动例子
  • android开发教程视频
  • js可以实现网页中哪些效果
  • js发送请求的几种方式
  • 获取python的运行结果
  • node express 路由
  • 税控盘税务数字书驱动找不到应用程序是咋回事
  • 工会的会费收入是什么意思
  • 什么是委托代征专用账户管理
  • 美国海关税收起征点
  • 银行手续费所得税是否可以税前扣除
  • 重庆税务总局重庆电子税务局
  • 青岛个人所得税咨询电话是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设