关于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 相关文章推荐
js获取当前select 元素值的代码
Apr 19 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
JavaScript数据类型详解
Apr 01 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
javascript每日必学之运算符
Feb 16 Javascript
当jquery ajax遇上401请求的解决方法
May 19 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
Jun 12 Javascript
Vue如何实现响应式系统
Jul 11 Javascript
微信小程序模板template简单用法示例
Dec 04 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 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实现网站插件机制的方法
2009/11/10 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
js中关于String对象的replace使用详解
2011/05/24 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
理解Python中的类与实例
2015/04/27 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
英文版银行求职信
2013/10/09 职场文书
教育学专业毕业生的自我评价
2013/11/21 职场文书
销售工作岗位职责
2013/12/24 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
团拜会主持词
2015/07/04 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
深入理解python多线程编程
2021/04/18 Python