对js陀螺仪的认知理解

检测设备方向

监听 deviceorientation

window.addEventListener("deviceorientation", handleOrientation, true);
复制代码
event中包含以下几个值
属性描述
type事件的类型。
bubbles事件是否正常起泡
cancelable该活动是否可以取消?
alpha设备绕Z轴的当前方向; 也就是说,设备围绕垂直于设备的线旋转多远。
beta设备围绕X轴的当前方向; 也就是说,设备向前或向后倾斜多远。
gamma设备绕Y轴的当前方向; 也就是说,设备向左或向右转动多远。
absolute如果方向是作为设备坐标系和地球坐标系之间的差异提供的,则该值是该值; 如果设备无法检测到地球坐标系,则此值为false。

需要重点关注这四个返回值

  • alpha
  • beta
  • gamma
  • absolute

手机轴线如图:

一、理解alpha

alpha 是设备绕Z轴的方向

它的取值范围在0到360度之间。当设备顶端指向正北方向时,该属性的取值为0。

即:围绕垂直手机屏幕的轴转动 如图:

二、理解beta

beta 是设备绕X轴的方向

它的取值范围在-180到180度之间。当设备与地球表面保持平行时,该属性的取值为0。

即:围绕平行音量键的轴转动 如图:

三、理解gamma

gamma 是设备绕Y轴的方向

它的取值范围在-90到90度之间。当该设备与地球表面保持平行时,该属性的取值为0。

即:围绕平行充电口的轴转动 如图:

四、理解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的说明

转载于:https://juejin.im/post/5cadac7b6fb9a068616b26bc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值