关于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 相关文章推荐
Prototype 学习 工具函数学习($方法)
Jul 12 Javascript
JavaScript Event学习第九章 鼠标事件
Feb 08 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
Javascript 实现复制(Copy)动作方法大全
Jun 20 Javascript
ie8下修改input的type属性报错的解决方法
Sep 16 Javascript
JS代码实现根据时间变换页面背景效果
Jun 16 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
详解JS-- 浮点数运算处理
Nov 28 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
Jul 24 Javascript
layer提示框添加多个按钮选择的实例
Sep 12 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
python中实现php的var_dump函数功能
2015/01/21 Python
Python fileinput模块使用实例
2015/05/28 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python中super函数的用法
2017/11/17 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
网络安全方面的面试题
2015/11/04 面试题
个人职业生涯规划书1500字
2013/12/31 职场文书
2015年端午节活动方案
2015/05/05 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
PHP实现两种排课方式
2021/06/26 PHP
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL