关于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 相关文章推荐
用javascript为页面添加天气显示实现思路及代码
Dec 02 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
js实现点击添加一个input节点
Dec 05 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 Javascript
使用javascript插入样式
Mar 14 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
Angular的$http与$location
Dec 26 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
Jul 13 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
May 02 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
vue实现图书管理系统
Dec 29 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模拟服务器实现autoindex效果的方法
2015/03/10 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
写的htc的数据表格
2007/01/20 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
python将图片文件转换成base64编码的方法
2015/03/14 Python
解决uWSGI的编码问题详解
2017/03/24 Python
Python3 socket同步通信简单示例
2017/06/07 Python
Python BS4库的安装与使用详解
2018/08/08 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
python pytest进阶之fixture详解
2019/06/27 Python
django+echart数据动态显示的例子
2019/08/12 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
.NET程序员的数据库面试题
2012/10/10 面试题
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
室内拓展活动方案
2014/02/13 职场文书
学籍证明模板
2014/11/21 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
详解Python牛顿插值法
2021/05/11 Python
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫