android surfaceview实现简易抓球游戏

  次阅读 来源:互联网(转载协议) 2015-10-13 07:39 我要评论(0)

闲来无聊结合上片surfaceView基础篇,再次改进成一款简易抓球小游戏哦。

圆球随机不停出现在屏幕,你像让他停住吗?那你就去用力抓拄他吧!

通过这个游戏可以进一步了解surfaceView与MotionEvent事件的实现

补充点 :

在android 中使用触摸屏 在模拟机中 我们的鼠标当点击一次模拟器屏幕然后释放,先触发 ACTION_DOWN 然后 ACTION_UP ;如果是在屏幕上移动那么才会触发 ACTION_MOVE 的动作;这个很正常, 但在真机中呢 ,是不是 也是这样的呢 ? 答案是否定的 如果我们那真机测试的话 流程如下

先触发 ACTION_DOWN 如果手指不抬起的话 会一直触发ACTION_MOVE事件(就是不移动也会触发) 然后 ACTION_UP

原因有两点:第一点是因为,Android 对于触屏事件很敏感!第二点:虽然我们的手指感觉是静止没有移动,其实事实不是如此!当我们的手指触摸到手机屏幕上之后,感觉静止没动,其实手指在不停的微颤抖震动。 所以才会一直触发action_move事件

先上图

\

两java类文件:activity、view

package com.logan.androidtest;

import android.app.Activity;

import android.os.Bundle;

import android.view.Window;

import android.view.WindowManager;

import com.logan.androidtest.view.GameSurfaceView;

/**

*

* @author xuan.lx

*

*/

public class GameSurfaceViewActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//GameSurfaceView2 view = new GameSurfaceView2(this);

GameSurfaceView view = new GameSurfaceView(this);

//没有标题

requestWindowFeature(Window.FEATURE_NO_TITLE);

//设置全屏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示

//设置自定义的view

setContentView(view);

//获取屏幕高宽

view.height = getWindowManager().getDefaultDisplay().getHeight();

view.width = getWindowManager().getDefaultDisplay().getWidth();

}

}

package com.logan.androidtest.view;

import java.util.Random;

/**

*

* @author xuan.lx

*

*/

public class GameSurfaceView extends SurfaceView implements

SurfaceHolder.Callback {

//屏幕的宽、高

public static int height = 0;

public static int width = 0;

//随机生成的x、y坐标

public volatile static Integer randomY = 0;

public volatile static Integer randomX = 0;

//x、y平方数

private double powX = 0;

private double powY = 0;

//半径

private static float radius = 60;

//距圆心的距离

double distance = 0;

//当前点击的x、y坐标

public volatile static Integer currentY = 0;

public volatile static Integer currentX = 0;

SurfaceView surfaceView;

SurfaceHolder sfh;

int miCount = 0;

static Random random = new Random(47);

// 控制循环

volatile static Boolean isLoop = true;

volatile static Boolean isStop = false;

public GameSurfaceView(Context context) {

super(context);

sfh = this.getHolder();// 获取holder

sfh.addCallback(this);

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

isLoop = true;

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...