2010-02-27 7 views
1

Je construis une boussole pour l'iphone, duh, juste à titre expérimental et pour apprendre à le faire, en javascript, avec phonegap.Problème de boussole javascript tournant avec angle - rotation/translation

maintenant je suis déjà capable d'obtenir les degrés, j'ai pu appliquer le deg 0-360 à un div (appelons-le la "roue") en utilisant le translateZ webkit-transformerZ (ou je pourrais utiliser tourner)

mais j'ai un bug:

lorsque la roue va de 0deg à 359deg tout est ok, mais quand le degré va 0deg à nouveau, au lieu de tourner en douceur dans ce sens (sens horaire), il tourner rapidement à nouveau anti-horaire à la positin 0deg ...

je ne sais pas je suis clair parce que n'est pas facile à expliquer sans un exemple .... '

fondamentalement mon problème est de trouver le bon script pour déplacer la roue en commençant par la valeur 0-360 que je peux obtenir facilement à partir de l'iphone.

toutes les suggestions sont les bienvenues.

+0

Pourquoi ce vote a-t-il été annulé? – Pointy

Répondre

1

Survoler lorsque vous obtenez plus de 360. Voici un exemple: http://gutfullofbeer.net/rotate.html

[modifier] J'ai mis à jour le code pour faire face à la rotation dans le sens antihoraire. Voici ce que mon Javascript basé sur jQuery ressemble:

$(function() { 
    var rotator = function(class, inc) { 
     var degrees = 0; 
     return function() { 
     $('.' + class) 
      .css({'-webkit-transform': 'rotate(' + degrees + 'deg)'}) 
      .css({'-moz-transform': 'rotate(' + degrees + 'deg)'}) 
      ; 
     degrees += inc; 
     if (degrees > 360) degrees -= 360; 
     if (degrees < 0) degrees += 360; 
     }; 
    }; 
    setInterval(rotator('clockwise', 2), 33); 
    setInterval(rotator('counter-clockwise', -2), 33); 
    }); 
1

je ne vois pas un bouton pour faire des commentaires ... désolé mais je dois écrire ici ... ce est mon code

° est la valeur que l'iPhone me donne à fourmi qu'il peut 0 à 360.

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

quand « mycompass » va à 359 et 0, il tourne tout le chemin du retour ...

en vous par exemple que je peux avoir des valeurs plus grandes que 360 ​​il ne fonctionne pas pour moi ...

où est mon erreur?

+0

Le bouton pour faire des commentaires est appelé "Ajouter un commentaire" et est juste en dessous de la réponse ... –

+0

idont le voir sous sa réponse ... est-ce un bug? – Francesco

+0

@chpwn - la fonction "ajouter un commentaire" nécessite 50 rep; @francescoB - il ne faut pas longtemps pour obtenir 50 rep; jusque-là ça va ... –