1

私はiPhone用のコンパスを構築しています.当然のことながら、実験目的で、javascriptでphonegapを使用してその方法を学びます.

今、私はすでに度を取得できるようになりました。webkit-transform translateZ (または、回転を使用できます) を使用して、度 0-360 を div (「ホイール」と呼びましょう) に適用できました。

しかし、私にはバグがあります:

ホイールが 0 度から 359 度になるとすべて問題ありませんが、角度が再び 0 度になると、その方向 (時計回り) にスムーズに回転する代わりに、再び反時計回りに 0 度の位置まで急速に回転します...

例がないと説明するのは簡単ではないので、私が明確だとは思いません....」

基本的に私の問題は、iPhone から簡単に取得できる値 0 ~ 360 で始まるホイールを動かすための適切なスクリプトを見つけることです。

どんな提案も大歓迎です。

4

2 に答える 2

1

コメントを作成するボタンが表示されません...申し訳ありませんが、ここに書く必要があります...これは私のコードです

degは、iPhone が私に与える値で、0 から 360 までの範囲です。

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

mycompass」が 359 になり、次に 0 になると、完全に逆方向に回転します...

あなたの例では、360より大きい値を持つことができるので、うまくいきません...

私のエラーはどこですか?

于 2010-02-27T21:05:04.777 に答える
1

360 を超えたらロールオーバーします。サンプルは次のとおりです: http://gutfullofbeer.net/rotate.html

[編集] 反時計回りの回転を処理するようにコードを更新しました。私のjQueryベースのJavascriptは次のようになります。

  $(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);
  });
于 2010-02-27T17:13:59.310 に答える