我目前正在制作一个网络应用程序的原型,该应用程序使用浏览器中的指南针标题。取值范围是0〜360。
每当我旋转一圈,该值就会从360跳回0。 我不知道如何在第二次旋转时将其从360增加到例如720。
我缺少什么数学魔术?
谢谢!
这是我的代码
if ('ondeviceorientationabsolute' in window) {
window.addEventListener('deviceorientationabsolute', handleOrientationAbsolute);
} else if ('ondeviceorientation' in window) {
window.addEventListener('deviceorientation', handleOrientation);
}
function handleOrientationAbsolute(e) {
alpha = Math.round(360 - e.alpha);
update();
}
function handleOrientation(e) {
alpha = Math.round(e.webkitCompassHeading);
update();
}
function update() {
headingEl.innerHTML = alpha; //This value should be able to return higher than 360
}
答案 0 :(得分:1)
我会从Mario Kart那里窃取技术。
在您的圈子周围具有某些阈值。您需要将圈子至少分为3组。 (假设您使用的是120°
点。)存储您所在的组(例如0
,1
或2
),并经常检查哪个组分组。如果您在0
和1
之间或在1
和2
之间进行更改,则只需将其存储。但是,如果您在2
和0
之间切换,请增加或减少计数器。
这将使您返回大于360°的值。