SurfaceView 使用demo 飞机游戏小样
本demo 主要使用了surfaceview 画图。
1.在线程中对canvas操作。
2.实现画图
3.surfaceView 继承了view 可以重写ontouchevent方法来操作输入。
代码存放:https://github.com/wish521/SurvaceViewDemo
主类:
package com.survaceview.view;import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView;import com.survaceview.R; import com.survaceview.utils.ScreenUtil; import com.survaceview.view.Logic.BulletFactory; import com.survaceview.view.Logic.BulletManger; import com.survaceview.view.Logic.MainPlaneManerger; import com.survaceview.view.Logic.NpcManerger; import com.survaceview.view.maps.Map;/*** Created by hongtao on 2017/10/25.*/public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {public MySurfaceView(Context context) {super(context);init();}public MySurfaceView(Context context, AttributeSet attrs) {super(context, attrs);init();}public MySurfaceView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}SurfaceHolder mSurfaceHolder;private void init() {mSurfaceHolder = getHolder();mSurfaceHolder.addCallback(this);}boolean mSurfaceIsCreated = false;Map mMap;@Overridepublic void surfaceCreated(SurfaceHolder holder) {mSurfaceIsCreated = true;BulletFactory.propear(getContext());}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {ScreenUtil.SCREEN_W = width;ScreenUtil.SCREEN_H = height;mMap = new Map(width, height);mMap.init(getResources(), R.raw.bg);MainPlaneManerger.getInstance().init(getResources(), width, height);NpcManerger.getInstance().init(getResources());gameThread.start();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {mSurfaceIsCreated = false;}long startTime;long endTime;long renderTime;Thread gameThread = new Thread(new Runnable() {@Overridepublic void run() {while (true) {startTime = System.nanoTime();Canvas canvas = mSurfaceHolder.lockCanvas();try {if (mSurfaceIsCreated) {if (mMap != null) {mMap.draw(canvas);}MainPlaneManerger.getInstance().run(canvas);if (NpcManerger.getInstance() != null) {NpcManerger.getInstance().run(canvas);}BulletManger.getInstance().draw(canvas);if (MainPlaneManerger.getInstance().getIsDie()) {break;}}endTime = System.nanoTime();renderTime = endTime - startTime;if (1000 / 30 - renderTime > 0) {Thread.sleep(1000 / 30 - renderTime);}} catch (InterruptedException e) {e.printStackTrace();} finally {mSurfaceHolder.unlockCanvasAndPost(canvas);}}}});@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:return true;case MotionEvent.ACTION_MOVE:MainPlaneManerger.getInstance().move(event.getRawX(), event.getRawY());break;case MotionEvent.ACTION_UP:break;}return super.onTouchEvent(event);}}
转载于:https://www.cnblogs.com/mamamia/p/7767415.html
SurfaceView 使用demo 飞机游戏小样相关推荐
- 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)
微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...
- 写个简单的飞机游戏玩玩
写个简单的飞机游戏玩玩 侯亮 1 概述 前些天看了<Android游戏编程之从零开始>一书中一个简单飞机游戏的实现代码,一时手痒,也写了一个练练手.虽然我的本职工作并不是写游戏, ...
- 用canvas整个打飞机游戏
之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和音频扒了了下来....自己凭着玩的心情重新写了一个.仅供娱乐哈......我没有用框架,所有js都是自己写的......所以就可以来当个简 ...
- 【响应式编程的思维艺术】 (4)从打飞机游戏理解并发与流的融合
[摘要]本文是Rxjs 响应式编程-第三章: 构建并发程序这篇文章的学习笔记. 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 划重点 尽量避免外 ...
- html制作打飞机的游戏,JavaScript 小型打飞机游戏实现原理说明
玩法说明:上下左右控制移动,空格发弹. 每打中一个敌机就加100分,每提升5000分,玩家的飞机的一次发弹数就加一,最多四,被敌机撞到或者让敌机飞到底部就算输.... 演示代码:http://demo ...
- html5 游戏制作教程,利用HTML5 Canvas制作一个简单的打飞机游戏
之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和音频扒了了下来....自己凭着玩的心情重新写了一个.仅供娱乐哈......我没有用框架,所有js都是自己写的......所以就可以来当个简 ...
- html打飞机游戏代码,利用HTML5 Canvas实现打飞机游戏
这篇文章主要介绍了利用HTML5 Canvas制作一个简单的打飞机游戏,作者也给出了相关的Javascript代码,需要的朋友可以参考下 之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和 ...
- 网页游戏制作html5,利用HTML5 Canvas制作一个简单的打飞机游戏
之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和音频扒了了下来....自己凭着玩的心情重新写了一个.仅供娱乐哈......我没有用框架,所有js都是自己写的......所以就可以来当个简 ...
- android碰撞动画,Android实战打飞机游戏之子弹生成与碰撞以及爆炸效果(5)
Android实战打飞机游戏子弹生成,新建子弹类 public class Bullet { // 子弹图片资源 public Bitmap bmpBullet; // 子弹的坐标 public in ...
最新文章
- David与Vincent的博弈游戏[树型DP]
- js 之 object
- 7、Power Query-合并查询
- 增加 addDataScheme(file) 才能收到SD卡插拔事件的原因分析 -- 浅析android事件过滤策略...
- wordpresd免登录发布接口php_屏蔽修改wp-login.php登录入口确保WordPress网站后台安全...
- 关于轻重边及树链剖分该怎么写...
- 【COCOS2D-HTML5 开发之一】新建HTML5项目及简单阐述与COCOS2D/X引擎关系
- 高性能MySQL(第2版)中文版pdf
- Android渐变折线图,自定义View之颜色渐变折线图
- 微信小游戏Laya引擎声音Bug的解决方案
- 我所理解的JS ~~运算符
- 苹果手机照片误删如何找回
- python隐藏源码,生成pyd文件并调用的完整过程
- vue实现v-chart绑定数据
- Text-to-Table: A New Way of Information Extraction
- 计算机专业英语 学习笔记 6
- 毕业至今,微博写给自己的感悟的话
- PCB如何输出Gerber文件和IPC网表
- 前缀表达式(无括号)转成中缀表达式(有括号)思路及代码
- 画笔与橡皮擦—特殊笔画制作海报
热门文章
- live2d手机制作软件_live2dviewerex手机版app
- 长沙理工计算机竞赛黑马,2018年五大学科成绩出炉,长沙杀出一匹黑马!
- Android 消息处理机制(Looper、Handler、MessageQueue,Message)
- 从“范跑跑”和“郭跳跳”看网络事件传播规律
- 朋友去华为面试,轻松拿到26K的Offer,羡慕了......
- MySQL内核月报 2014.08-TokuDB·社区八卦·TokuDB团队
- Uranium UI Kit
- 十什么争什么的成语(十什么争什么四字成语大全)
- Ebox还没到,可怎么办呢
- 通过jquery 打开新窗口,