javascript html5摇一摇功能的实现


Posted in Javascript onApril 19, 2016

通过网上的资料,加上自己的整理,写了一份html摇一摇功能的简介,用做技术备份。
知识要点 

1、DeviceMotionEvent
    这是html5支持的重力感应事件,关于文档请看:http://w3c.github.io/deviceorientation/spec-source-orientation.html
事件介绍:
deviceorientation 提供设备的物理方向信息,表示为一系列本地坐标系的旋角。
devicemotion 提供设备的加速信息,表示为定义在设备上的坐标系中的卡尔迪坐标。其还提供了设备在坐标系中的自转速率。若可行的话,事件应该提供设备重心处的加速信息。
compassneedscalibration 用于通知Web站点使用罗盘信息校准上述事件。

 

2、事件简介
 window.addEventListener("deviceorientation",function(event){// 处理event.alpha、event.beta及event.gamma},true);

{alpha:90,
 beta:0,
 gamma:0};

这是 deviceorientation事件返回的参数,为了获得罗盘指向,可以简单的使用360度减去alpha。若设被平行于水平表面,其罗盘指向为(360 - alpha)。 若用户手持设备,屏幕处于一个垂直平面且屏幕顶端指向上方。beta的值为90,alpha和gamma无关。 用户手持设备,面向alpha角度,屏幕处于一个垂直屏幕,屏幕顶端指向右方,则其方向信息如下

{alpha:270- alpha,
 beta:0,
 gamma:90};

 注册一个devicemotion事件的接收器:

window.addEventListener("devicemotion",function(event){// 处理event.acceleration、event.accelerationIncludingGravity、// event.rotationRate和event.interval},true);

 

 将设备安置于车辆之上,屏幕处于一个垂直平面,顶端向上,面向车辆后部。车辆行驶速度为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}};

 功能实现

if(window.DeviceMotionEvent){
 window.addEventListener('devicemotion', YaoYiYao,false);
 }
 var speed =30;//speed
 var x = y = z = lastX = lastY = lastZ =0;
 function YaoYiYao(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(1);
 }
 lastX = x;
 lastY = y;
 lastZ = z;
 }

首先判断浏览器是否支持该事件。
YaoYiYao用来检测是否对手机进行摇动操作,具体就是获取手机的的移动数据,将其存在一个外部变量中,当下次又触发摇动事件时,判断上次的摇动坐标 和现在的摇动坐标 是否处于一个频繁调动的范围:Math.abs(x-lastX)> speed ||Math.abs(y-lastY)> speed ||Math.abs(z-lastZ)> speed
基本上 满足这种条件的话,就是手机正处于摇动状态,在if语句里面添加进你要执行的摇一摇代码即可。

以上就是html5摇一摇功能的实现思路,希望对大家的学习有所帮助。

Javascript 相关文章推荐
广告显示判断
Aug 31 Javascript
jquery.ui.draggable中文文档
Nov 24 Javascript
JS跨域总结
Aug 30 Javascript
js 控制下拉菜单刷新的方法
Mar 03 Javascript
基于jQuery实现的扇形定时器附源码下载
Oct 20 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
May 13 jQuery
使用vuex的state状态对象的5种方式
Apr 19 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
JavaScript事件委托实现原理及优点进行
Aug 29 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 Javascript
一些实用性较高的js方法
Apr 19 #Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
Apr 19 #Javascript
JavaScript中创建对象的模式汇总
Apr 19 #Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 #Javascript
简单讲解jQuery中的子元素过滤选择器
Apr 18 #Javascript
举例讲解jQuery中可见性过滤选择器的使用
Apr 18 #Javascript
html5+javascript实现简单上传的注意细节
Apr 18 #Javascript
You might like
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
python中循环语句while用法实例
2015/05/16 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
Python中的Cookie模块如何使用
2020/06/04 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
商务英语专业毕业生自荐信
2013/11/05 职场文书
创业计划书如何吸引他人眼球
2014/01/10 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
小学生评语大全
2014/04/18 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
学习与创新自我评价
2015/03/09 职场文书
仰望星空观后感
2015/06/10 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书