关于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 相关文章推荐
xml和web特殊字符
Apr 28 Javascript
超酷的网页音乐播放器DewPlayer使用方法
Dec 18 Javascript
jquery表单验证使用插件formValidator
Nov 10 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
Apr 17 Javascript
jquery获取复选框checkbox的值实现方法
May 30 Javascript
javascript函数中的3个高级技巧
Sep 22 Javascript
BootStrap select2 动态改变值的方法
Feb 10 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
基于vue中css预加载使用sass的配置方式详解
Mar 13 Javascript
vue基于element的区间选择组件
Sep 07 Javascript
JS删除数组指定值常用方法详解
Jun 04 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
JavaScript类库D
2010/10/24 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
关于Django Models CharField 参数说明
2020/03/31 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
Oracle性能调优原则
2012/05/03 面试题
大学自主招生自荐信
2013/12/16 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
大学自主招生推荐信
2014/05/10 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
Python字符串的转义字符
2022/04/07 Python
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis