资讯
安全
论坛
下载
读书
程序开发
数据库
系统
网络
电子书
微信学院
站长学院
QQ
手机软件
考试
安全
|
web开发
|
软件开发
|
移动开发
|
数据库
|
网络
|
系统
|
网站
|
考试认证
|
其他
|
读书频道
>
网站
>
网页设计
>
想到做到:Android开发关键技术与精彩案例
9.1.5 输入处理
12-08-06
叶孤城
收藏
我要投稿
本文所属图书 >
想到做到:Android开发关键技术与精彩案例
这不是一本只讲android开发技术的图书,本书让开发者站在移动互联产业链条上思考自己该怎么做本书按照入门篇、进阶篇和游戏篇三大部分,结合37个案例系统全面地介绍Android应用和游戏开发的知识。结合实践和设计模...
立即去当当网订购
由于当前的Android模拟器是全触摸屏模式,因此需要处理onTouchEvent()方法来响应用户的手势输入。在游戏的运行过程中,需要区分用户的向上滑动(代表暂停或者启动游戏)、向下滑动(方块快速落下)、向左滑动和向右滑动事件。除此之外,还需要区分用户的点击屏幕动作(方块变形)。为了区分用户的手势移动方向,需要使用VelocityTracker类。每次onTouchEvent()方法被调用时,参数传入的MotionEvent对象都被加入到VelocityTracker对象中。当MotionEvent.ACTION_UP事件传入时开始计算移动的速度和方向。由于VelocityTracker的getXVelocity()和getYVelocity()方法返回的是带符号的速度,因此可以根据速度的正负值判断用户手势的方向。对于在MotionEvent.ACTION_DOWN和MotionEvent. ACTION_UP之间产生移动距离较小的手势,则认为是点击屏幕的事件,方块需要变换形状。onTouchEvent()代码如下所示:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (tracker == null)
tracker = VelocityTracker.obtain();
//将event加入到tracker中以便计算
tracker.addMovement(event);
int action = event.getAction();
switch (action) {
//ACTION_DOWN时记录clickX和clickY的值
case MotionEvent.ACTION_DOWN:
clickX = (int) event.getX();
clickY = (int) event.getY();
break;
//ACTION_UP,开始计算
case MotionEvent.ACTION_UP:
tracker.computeCurrentVelocity(1000);
//获得y轴方向的速度
float vy = tracker.getYVelocity();
//获得x轴方向的速度
float vx = tracker.getXVelocity();
//最新的x,y坐标
int x = (int) event.getX();
int y = (int) event.getY();
if (Math.abs(vy) > ViewConfiguration.getMinimumFlingVelocity()
& vy < 0 & Math.abs(y - clickY) > UP_LIMIT) {
//根据上述条件判断为向上滑动
if (state == READY) {
start();
} else {
pause(false);
}
tracker.recycle();
break;
}
//游戏正在运行中
if (state == RUNNING) {
if (Math.abs(x - clickX) < CLICK
& Math.abs(y - clickY) <= CLICK) {
//判断为屏幕点击动作,变换方块形状
next();
tracker.recycle();
break;
}
if (Math.abs(vy) > ViewConfiguration.getMinimumFlingVelocity()
& y - clickY > UP_LIMIT & Math.abs(vy) > Math.abs(vx)) {
//判断为下滑动作,让方块直接落下
fall();
tracker.recycle();
break;
}
if (Math.abs(vx) > Math.abs(vy)) {
//判断为左右移动动作
if (vx > 0)
right();
else
left();
}
}
tracker.recycle();
break;
default:
break;
}
return true;
}
点击复制链接 与好友分享!
回本站首页
分享到:
更多
您对本文章有什么意见或着疑问吗?请到
论坛讨论
您的关注和建议是我们前行的参考和动力
上一篇:
1.3 功能
下一篇:
1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
112 |
3.7 小结
112 |
3.6.4 框架MVC实例分析
112 |
3.6.3 框架MVC思路讲解
112 |
3.6.2 框架的基础目录结构
112 |
3.6.1 框架的特点和优势
112 |
3.6 开发框架简介
112 |
3.5 认识Smarty模板引擎
112 |
3.4 常用PHP开发框架
3.2.3 Bootstrap栅格系统
3.4.4 自适应显示/隐藏页面内容
3.3.1 固定式布局
2.1.1 下载Bootstrap
3.3.2 流式布局
3.4.6 响应式Bootstrap
3.4.2 设计响应式图片
3.2.4 响应式Bootstrap栅格系统
文章
下载
读书
·
Win2000下关闭无用端口
·
禁止非法用户登录综合设置 [win9x篇]
·
关上可恶的后门——消除NetBIOS隐患
·
网络入侵检测系统
·
潜伏在Windows默认设置中的陷井
·
调制解调器的不安全
·
构建Windows 2000服务器的安全防护林
·
SQL Server 2000的安全配置
·
Windows优化大师注册机源码
·
Aspcode动画教程
·
WIN 2000服务器防止ICMP数据包攻击教程
·
实现网络隐身的简单方法
·
手工进行克隆帐号
·
用W32DASM破解网页合并器的密码
·
注册表操作动画教程
·
冰河陷阱v1.2
·
黑客攻防技术宝典:Web实战篇(第2版)
·
超级网管员——网络安全
·
代码大全(第二版)
·
软件之道:软件开发争议问题剖析
·
CSS插件工具箱
·
CSS入门经典(第3版)
·
C#并行编程高级教程:精通.NET 4 Pa
·
CMMI+敏捷整合开发
关于我们
|
联系我们
|
广告服务
|
投资合作
|
版权申明
|
在线帮助
|
网站地图
|
作品发布
|
Vip技术培训
版权所有:
红黑联盟
--致力于做最好的IT技术学习网站