2010-02-27 47 views
1

这是我简单的函数(“mycompass”是我的身体一个div),用于当指南针“轮”做一个完整的旋转从0到某种原因旋转WebKit的问题

function watchCompass() { 

    var suc = function(a){  
     var r =a.magneticHeading; 
     document.getElementById('mycompass').style.webkitTransform = "rotateZ("+-r+"deg)"; 
    }; 
    var fail = function(){}; 
    var opt = {}; 
    opt.frequency = 50; 
    timer = navigator.compass.watchHeading(suc,fail,opt); 
} 

360它回到0而不是“虚拟”361 ...等等。不能够理解,从0和360没有区别...

我不知道如何计算一种让车轮顺时针和逆时针顺滑的方法

另一种方法来把这个问题stion是:

如何将我的对象从例如15deg旋转到270deg,逆时针方向而不是顺时针旋转?我怎么能告诉我的脚本那个谷?

+0

你已经问过这个问题,我已经给你一个答案。你将不得不发布更多的代码;你已经遗漏了“导航器”,“指南针”,“watchHeading”函数等等。这不是一个真正的Javascript问题,它更多的是关于简单的模算术。 – Pointy 2010-02-27 23:10:31

+0

我一直在问,因为我很惊讶没有人真的能够解决这个问题。 – Francesco 2010-02-28 01:33:43

+0

在这个例子中,如果你点击第一个E clokwise,那么S 它简单地做了什么sript。 – Francesco 2010-02-28 01:35:45

回答

2

这是我的解决办法,但我还是老样子有问题,当车轮度== -360或360

var angle = 0; 
var lastAngle = 0; 




    function watchCompass() { 

      var suc = function(a){ 
      var angle = roundNyc(a.magneticHeading); 

     l1 = angle - lastAngle; 
     l2 = 360 - l1; 

     if(Math.abs(l1) >= Math.abs(l2)){ 

     r = (lastAngle - l2) ; 

     }else{ 

     r = angle ; 

     }  

     lastAngle = r;  
     l1 = 0; 
     l2 = 0; 

    document.getElementById('mycompass').style.webkitTransform = 'rotateZ(' + -r + 'deg)'; 

      }; 
      var fail = function(){}; 
      var opt = {}; 
      opt.frequency = 50; 
      timer = navigator.compass.watchHeading(suc,fail,opt); 
     } 
0

同样,这里是如何做到这一点的例子:http://gutfullofbeer.net/compass.html

+0

我仍然不认为这是正确的例子,因为这个指南针是愚蠢的广告不承认两点之间的最短长度,它只是从A到B而不要求“是从A向B旋转还是从B向后旋转? “ 就像一个真正的指南针 – Francesco 2010-02-28 01:32:20