关于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 相关文章推荐
执行iframe中的javascript方法
Oct 07 Javascript
js function使用心得
May 10 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
May 18 Javascript
第一次动手实现bootstrap table分页效果
Sep 22 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
vue之数据交互实例代码
Jun 16 Javascript
Vue的编码技巧与规范使用详解
Aug 28 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 Javascript
js用正则表达式筛选年月日的实例方法
Jan 04 Javascript
浅析JavaScript中的变量提升
Jun 01 Javascript
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使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
js实现开关灯效果
2020/03/30 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
python字典一键多值实例代码分享
2019/06/14 Python
查看keras的默认backend实现方式
2020/06/19 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
购房意向书范本
2014/04/01 职场文书
继承公证书样本
2014/04/04 职场文书
车间安全生产标语
2014/06/06 职场文书
创优争先心得体会
2014/09/11 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Java实现多文件上传功能
2021/06/30 Java/Android
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL