关于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 相关文章推荐
jQuery 连续列表实现代码
Dec 21 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 Javascript
详解javascript获取url信息的常见方法
Dec 19 Javascript
js实现省市级联效果分享
Aug 10 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 Javascript
微信小程序生成海报分享朋友圈的实现方法
May 06 Javascript
JS块级作用域和私有变量实例分析
May 11 Javascript
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
AJAX检测用户名是否存在的方法
Mar 24 Javascript
JavaScript 定时器详情
Nov 11 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
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
jQuery find和children方法使用
2011/01/31 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
js变量提升深入理解
2016/09/16 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python多线程爬虫简单示例
2016/03/04 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
python自动化之Ansible的安装教程
2019/06/13 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
寒假思想汇报
2014/01/10 职场文书
数控个人求职信范文
2014/02/03 职场文书
人事任命书格式
2014/06/05 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
企业党建工作总结2015
2015/05/26 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python