关于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 相关文章推荐
ExtJS 2.2.1的grid控件在ie6中的显示问题
May 04 Javascript
JQuery autocomplete 使用手册
Apr 01 Javascript
javascript判断机器是否联网的2种方法
Aug 09 Javascript
可自己添加html的伪弹出框实现代码
Sep 08 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
vuejs父子组件通信的问题
Jan 11 Javascript
js控制按钮,防止频繁点击响应的实例
Feb 15 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
vue input 输入校验字母数字组合且长度小于30的实现代码
May 16 Javascript
vue 动态表单开发方法案例详解
Dec 02 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中使用Oracle数据库(1)
2006/10/09 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
php工具型代码之印章抠图
2018/07/18 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
外贸业务员求职自荐信分享
2013/09/21 职场文书
教师实习自我鉴定
2013/12/18 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
产品委托授权书范本
2014/09/16 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
运动会宣传稿100字
2015/07/23 职场文书
新娘婚礼致辞
2015/07/27 职场文书
小组组名及励志口号
2015/12/24 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL