1

这是我的简单功能('mycompass' 是我体内的一个 div)

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);
}

出于某种原因,当指南针“轮”从 0 到 360 完全旋转时,它会回到 0 而不是“虚拟”361 ......等等。无法理解从 0 到 360 没有区别...

而且我不知道如何计算让车轮顺时针和逆时针顺畅旋转的方法

提出这个问题的另一种方式是:

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

4

2 回答 2

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);
        } 
于 2010-02-28T01:39:42.673 回答
0

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

于 2010-02-27T23:36:00.200 回答