Проблема с вращением webkit при вращении как компас - PullRequest
1 голос
/ 28 февраля 2010

это моя простая функция («мой компас» - это 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 градусов, против часовой стрелки, а не по часовой стрелке? как я могу сказать своему сценарию эту вейл?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2010

это мой обходной путь, но у меня все еще есть проблема, когда степень колеса == -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 голосов
/ 28 февраля 2010

Опять же, вот пример того, как это сделать: http://gutfullofbeer.net/compass.html

...