html5重力感应事件

一、手机重力感应图形分析

1、设备围绕z轴的旋转角度为α,α角度的取值范围在[0,360)。

设备在初始位置,与地球(XYZ)和身体(XYZ)某个位置对齐。

设备围绕z轴的旋转角度为α,并与先前的x和y轴位置对比,显示x,y轴新坐标为x0和y0。

2、设备围绕x轴的旋转角度为β,β角度的取值范围在(-180,180)。

设备围绕x轴的旋转角度为β,并与先前的y和z轴的位置对比,显示y,z轴新坐标为y0和z0。

3、设备围绕y轴的旋转角度为γ,γ角度的取值范围在(-90,90)。

设备围绕y轴的旋转角度为γ,并与先前的x和z轴的位置对比,显示x,z轴新坐标为x0和z0。

二、事件介绍

1、deviceorientation 提供设备的物理方向信息,表示为一系列本地坐标系的旋角。

2、devicemotion 提供设备的加速信息,表示为定义在设备上的坐标系中的α坐标。其还提供了设备在坐标系中的自转速率。若可行的话,事件应该提供设备重心处的加速信息。

3、compassneedscalibration 用于通知Web站点使用罗盘信息校准上述事件。

三、使用说明

1、 注册一个deviceorientation事件的接收器:

window.addEventListener("deviceorientation", function(event) {

// 处理event.alpha、event.beta及event.gamma

}, true);

2、将设备放置在水平表面,屏幕顶端指向西方,则其方向信息如下:

{alpha: 90,

beta: 0,

gamma: 0};

为了获得罗盘指向,可以简单的使用360度减去alpha。若设被平行于水平表面,其罗盘指向为(360 - alpha)。

3、若用户手持设备,屏幕处于一个垂直平面且屏幕顶端指向上方。beta的值为90,alpha和gamma无关。 用户手持设备,面向alpha角度,屏幕处于一个垂直屏幕,屏幕顶端指向右方,则其方向信息如下:

{alpha: 270 - alpha,

beta: 0,

gamma: 90};

4、显示自定义UI界面指导用户校准罗盘:

window.addEventListener("compassneedscalibration", function(event) {

alert('您的罗盘需要校准,请将设备沿数字8方向移动。');

event.preventDefault();

}, true);

5、注册一个devicemotion时间的接收器:

window.addEventListener("devicemotion", function(event) {

// 处理event.acceleration、event.accelerationIncludingGravity、

// event.rotationRate和event.interval

}, true);

6、将设备放置在水平表面,屏幕向上,acceleration为零,则其accelerationIncludingGravity信息如下:

{x: 0,

y: 0,

z: 9.81};

7、设备做自由落体,屏幕水平向上,accelerationIncludingGravity为零,则其acceleration信息如下:

{x: 0,

y: 0,

z: -9.81};

8、将设备安置于车辆至上,屏幕处于一个垂直平面,顶端向上,面向车辆后部。车辆行驶速度为v,向右侧进行半径为r的转弯。设备记录acceleration和accelerationIncludingGravity在位置x处的情况,同时设备还会记录rotationRate.gamma的负值:

{acceleration: {x: v^2/r, y: 0, z: 0},

accelerationIncludingGravity: {x: v^2/r, y: 0, z: 9.81},

rotationRate: {alpha: 0, beta: 0, gamma: -v/r*180/pi} };

四、DEMO代码:

if (window.DeviceMotionEvent) {

window.addEventListener('devicemotion',deviceMotionHandler, false);

}

var speed = 30;//速度

var x = y = z = lastX = lastY = lastZ = 0;

function deviceMotionHandler(eventData) {

var acceleration =eventData.accelerationIncludingGravity;

x = acceleration.x;

y = acceleration.y;

z = acceleration.z;

if(Math.abs(x-lastX) > speed || Math.abs(y-lastY) > speed || Math.abs(z-lastZ) > speed) {

//简单的摇一摇触发代码

alert('触发了重力感应');

}

lastX = x;

lastY = y;

lastZ = z;

}

DEMO演示

html5 360 重力 感应,H5案例分享:html5重力感应事件相关推荐

  1. html5页面适配方法,H5案例分享:HTML5移动页面适配方法

    HTML5移动页面适配方法 之前做过PC页面时考虑最多的是兼容,这是因为浏览器之间的差异引起的.而移动端是基本没有"兼容"的问题了,全是CSS3,是不是很开心,但是开心早了,因为适 ...

  2. html5 调用本地街景,H5案例分享:在移动端调用腾讯街景

    在移动端调用腾讯街景 腾讯地图街景组件可以通过多种方式调起,来展示3D街景信息. 腾讯街景API,是构建在v2版本上的全新应用接口,对于目的地,可以让用户足不出户,得到更直观.更真切 的身临其境的体验 ...

  3. H5案例分享—你的数学是语文老师教的吗?

    教育类H5游戏已经被广泛应用,很多教育软件都采用H5游戏形式向玩家传递知识,金豆微游戏为大家倾情奉献H5数学游戏,测一测你的数学能力有多高,众多的数学算术题,你能答对几题呢,赶紧来挑战一下吧! 游戏需 ...

  4. html5源码 母亲节,母亲节H5:非常有创意的5款母亲节H5案例分享

    节日类 有些事情是无法用言语表达的,就比如对母亲的爱,我相信很少有人会经常对母亲说:我爱你,这也是因为国人太过于腼腆的原因.既然没办法用言语来表示对母亲的爱,或许下面这些母亲节H5案例是一个不错的表达 ...

  5. H5案例分享:html5移动开发细微之美

    html5移动开发细微之美 1.H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=dev ...

  6. html定位的实例,H5案例分享:基于浏览器的HTML5地理定位

    基于浏览器的HTML5地理定位 地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML ...

  7. html5 精灵动画,H5案例分享:CreateJs-EaselJS精灵Sprite类和简明动画

    CreateJs-EaselJS精灵Sprite类和简明动画 一.EaselJS中Sprite类 EaselJS精灵Sprite类是用spritesheet实例显示一个帧或帧序列(即动画).精灵片是一 ...

  8. H5案例分享-H5游戏跳跃类玩法分享

    又到了每周一次的精品游戏分享时间!这是一款TOM游戏出品的html5实现的跳跃过关类小游戏.小编发现最近朋友圈很多人都在玩儿跳跃类h5游戏,天空熊猫.粽子哪里跑.跳跳犬等小游戏,为什么跳跃类游戏如此受 ...

  9. H5案例分享:jquery.qrcode.js生成简易二维码

    近期做项目需要生成二维码,并且解码获取信息,jquery.qrcode.js生成二维码比较的方便,写个教程分享给大家.欢迎大家测试留言,我会改进代码. 现在二维码越来越流行啦,支付扫二维码,关注扫二维 ...

最新文章

  1. c语言使用指定字符串替换特定的子串
  2. WPF入门(三)-几何图形之不规则图形(PathGeometry) (2)
  3. python将一组数分成每3个一组
  4. Redis NoSQL
  5. [转载] 武汉天河机场大巴时刻及路线
  6. Android系统性能优化(71)---关于Bitmap图片资源优化的小事
  7. C#遍历文件夹下所有文件
  8. 微信公众平台开发-access_token获取及应用(含源码)
  9. 借助NetFlow Analyzer的IPAM SPM插件,实现IP和交换机端口管理
  10. serialize()序列化
  11. 高通baseband多媒体简介
  12. 11.18C语言练习题
  13. Linux中的高级网络控制
  14. 深入浅出Java开发!什么是分布式系统,如何学习分布式系统
  15. 中国科学院大学计算机学院夏令营,2019年中国科学院大学生数学夏令营招募通知...
  16. 计算机科学与技术最轻松的工作,高薪又轻松的好工作排行榜 你的职业上榜了吗?...
  17. xxl-rpc remoting error(connect timed out), for url : http://172.26.112.1:9999/run
  18. in house publish inter company
  19. 不要闷声发大财,要懂内存分析……
  20. 怎样获取微信收款码免费提现(非邀请用户也可以)

热门文章

  1. 2021年茶艺师(初级)考试技巧及茶艺师(初级)复审考试
  2. CRM中的俱乐部管理
  3. 百度贴吧息县吧吧主被传审——中国首例贴吧案件
  4. 应用层——(计网第7版 谢xr)
  5. mq4气体传感器流程图_气体传感器Word版
  6. linux shell中 '' ``的区别
  7. 天涯各版回复过10000帖子大汇总(2006.9月3日更新版)
  8. Linux系统中安装和管理程序 太详细了
  9. Linux下使用Vim编辑器异常退出E325:ATTENTION错误
  10. 在网站底部附上网站备案号