本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 飞机游戏小样相关推荐

  1. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  2. 写个简单的飞机游戏玩玩

    写个简单的飞机游戏玩玩 侯亮 1      概述 前些天看了<Android游戏编程之从零开始>一书中一个简单飞机游戏的实现代码,一时手痒,也写了一个练练手.虽然我的本职工作并不是写游戏, ...

  3. 用canvas整个打飞机游戏

    之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和音频扒了了下来....自己凭着玩的心情重新写了一个.仅供娱乐哈......我没有用框架,所有js都是自己写的......所以就可以来当个简 ...

  4. 【响应式编程的思维艺术】 (4)从打飞机游戏理解并发与流的融合

    [摘要]本文是Rxjs 响应式编程-第三章: 构建并发程序这篇文章的学习笔记. 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 划重点 尽量避免外 ...

  5. html制作打飞机的游戏,JavaScript 小型打飞机游戏实现原理说明

    玩法说明:上下左右控制移动,空格发弹. 每打中一个敌机就加100分,每提升5000分,玩家的飞机的一次发弹数就加一,最多四,被敌机撞到或者让敌机飞到底部就算输.... 演示代码:http://demo ...

  6. html5 游戏制作教程,利用HTML5 Canvas制作一个简单的打飞机游戏

    之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和音频扒了了下来....自己凭着玩的心情重新写了一个.仅供娱乐哈......我没有用框架,所有js都是自己写的......所以就可以来当个简 ...

  7. html打飞机游戏代码,利用HTML5 Canvas实现打飞机游戏

    这篇文章主要介绍了利用HTML5 Canvas制作一个简单的打飞机游戏,作者也给出了相关的Javascript代码,需要的朋友可以参考下 之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和 ...

  8. 网页游戏制作html5,利用HTML5 Canvas制作一个简单的打飞机游戏

    之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和音频扒了了下来....自己凭着玩的心情重新写了一个.仅供娱乐哈......我没有用框架,所有js都是自己写的......所以就可以来当个简 ...

  9. android碰撞动画,Android实战打飞机游戏之子弹生成与碰撞以及爆炸效果(5)

    Android实战打飞机游戏子弹生成,新建子弹类 public class Bullet { // 子弹图片资源 public Bitmap bmpBullet; // 子弹的坐标 public in ...

最新文章

  1. David与Vincent的博弈游戏[树型DP]
  2. js 之 object
  3. 7、Power Query-合并查询
  4. 增加 addDataScheme(file) 才能收到SD卡插拔事件的原因分析 -- 浅析android事件过滤策略...
  5. wordpresd免登录发布接口php_屏蔽修改wp-login.php登录入口确保WordPress网站后台安全...
  6. 关于轻重边及树链剖分该怎么写...
  7. 【COCOS2D-HTML5 开发之一】新建HTML5项目及简单阐述与COCOS2D/X引擎关系
  8. 高性能MySQL(第2版)中文版pdf
  9. Android渐变折线图,自定义View之颜色渐变折线图
  10. 微信小游戏Laya引擎声音Bug的解决方案
  11. 我所理解的JS ~~运算符
  12. 苹果手机照片误删如何找回
  13. python隐藏源码,生成pyd文件并调用的完整过程
  14. vue实现v-chart绑定数据
  15. Text-to-Table: A New Way of Information Extraction
  16. 计算机专业英语 学习笔记 6
  17. 毕业至今,微博写给自己的感悟的话
  18. PCB如何输出Gerber文件和IPC网表
  19. 前缀表达式(无括号)转成中缀表达式(有括号)思路及代码
  20. 画笔与橡皮擦—特殊笔画制作海报

热门文章

  1. live2d手机制作软件_live2dviewerex手机版app
  2. 长沙理工计算机竞赛黑马,2018年五大学科成绩出炉,长沙杀出一匹黑马!
  3. Android 消息处理机制(Looper、Handler、MessageQueue,Message)
  4. 从“范跑跑”和“郭跳跳”看网络事件传播规律
  5. 朋友去华为面试,轻松拿到26K的Offer,羡慕了......
  6. MySQL内核月报 2014.08-TokuDB·社区八卦·TokuDB团队
  7. Uranium UI Kit
  8. 十什么争什么的成语(十什么争什么四字成语大全)
  9. Ebox还没到,可怎么办呢
  10. 通过jquery 打开新窗口,