关于js陀螺仪的理解分析


Posted in Javascript onApril 11, 2019

检测设备方向

监听 deviceorientation

window.addEventListener("deviceorientation", handleOrientation, true);

event中包含以下几个值

属性 描述
type 事件的类型。
bubbles 事件是否正常起泡
cancelable 该活动是否可以取消?
alpha 设备绕Z轴的当前方向; 也就是说,设备围绕垂直于设备的线旋转多远。
beta 设备围绕X轴的当前方向; 也就是说,设备向前或向后倾斜多远。
gamma 设备绕Y轴的当前方向; 也就是说,设备向左或向右转动多远。
absolute 如果方向是作为设备坐标系和地球坐标系之间的差异提供的,则该值是该值; 如果设备无法检测到地球坐标系,则此值为false。

需要重点关注这四个返回值

  • alpha
  • beta
  • gamma
  • absolute

手机轴线如图:

关于js陀螺仪的理解分析

一、理解alpha

alpha 是设备绕Z轴的方向

它的取值范围在0到360度之间。当设备顶端指向正北方向时,该属性的取值为0。

即:围绕垂直手机屏幕的轴转动

如图:

关于js陀螺仪的理解分析

二、理解beta

beta 是设备绕X轴的方向

它的取值范围在-180到180度之间。当设备与地球表面保持平行时,该属性的取值为0。

即:围绕平行音量键的轴转动

如图:

关于js陀螺仪的理解分析

三、理解gamma

gamma 是设备绕Y轴的方向

它的取值范围在-90到90度之间。当该设备与地球表面保持平行时,该属性的取值为0。

即:围绕平行充电口的轴转动

如图:

关于js陀螺仪的理解分析

四、理解absolute

absolute 是用来判断是否是地球坐标系。

如果当前设备坐标系与地球坐标系相对应,则返回true,

否则返回false;

返回值为true时候,可以进行使用其他坐标系作为基准

总结

  alpha => 围绕垂直手机屏幕的轴转动
  beta  => 围绕平行音量键的轴转动
  gamma => 围绕平行充电口的轴转动

  absolute => 返回是否与地球坐标系相对应

示例代码:

if (window.DeviceOrientationEvent) {
 window.addEventListener("deviceorientation", function(event) {
  // alpha: 围绕垂直手机屏幕的轴转动的旋转角度
  var rotateDegrees = event.alpha;
  // gamma: 围绕平行充电口的轴转动的旋转角度
  var leftToRight = event.gamma;
  // beta: 围绕平行音量键的轴转动的旋转角度
  var frontToBack = event.beta;

  handleOrientationEvent(frontToBack, leftToRight, rotateDegrees);
 }, true);
}

var handleOrientationEvent = function(frontToBack, leftToRight, rotateDegrees) {
 // 弹奏一曲夏威夷吉他
};

对于浏览器兼容性方面 可以在使用时候参照MDN的说明

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
关于viewport,Ext.panel和Ext.form.panel的关系
May 07 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
Oct 22 Javascript
javascript 打开页面window.location和window.open的区别
Mar 17 Javascript
jquery js 重置表单 reset()具体实现代码
Aug 05 Javascript
javascript数组快速打乱重排的方法
Jan 02 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
C#实现将一个字符转换为整数
Dec 12 Javascript
Layer+Echarts构建弹出层折线图的方法
Sep 25 Javascript
javascript局部自定义鼠标右键菜单
Dec 08 Javascript
Vue实现圆环进度条的示例
Feb 06 Vue.js
angular 表单验证器验证的同时限制输入的实现
Apr 11 #Javascript
angular 实现同步验证器跨字段验证的方法
Apr 11 #Javascript
vue实现新闻展示页的步骤详解
Apr 11 #Javascript
记一次用vue做的活动页的方法步骤
Apr 11 #Javascript
vue数据初始化initState的实例详解
Apr 11 #Javascript
Vue起步(无cli)的啊教程详解
Apr 11 #Javascript
vue+vuex+json-seiver实现数据展示+分页功能
Apr 11 #Javascript
You might like
php分页示例代码
2007/03/19 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
php和nginx交互实例讲解
2019/09/24 PHP
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
js闭包的用途详解
2014/11/09 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
Vue.js对象转换实例
2017/06/07 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
vue打包相关细节整理(小结)
2018/09/28 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Python如何读取、写入JSON数据
2020/07/28 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
公司证明怎么写
2014/09/22 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
国庆节慰问信
2015/02/15 职场文书
高中运动会广播稿
2015/08/19 职场文书