AS3回転スライダからの連続値

私は0と1の間に私に読書を与えるために円の周りをドラッグするダイヤルを持っています。

このようなもの:

dx = mouseX-centerX;
        dy = mouseY-centerY;
        rad = Math.atan2(dy,dx);

        rad += offset;

        Tweener.addTween(knob,{y:centerY - Math.cos(rad)*radius, time:.1,  transition:"easeOutSine"});
        Tweener.addTween(knob,{x:centerX + Math.sin(rad)*radius, time:.1,  transition:"easeOutSine"});
        knob.rotation = rad * 180/Math.PI;

この作品は、スライダが359度から1度に変わった場合を除き、0と1の間の値が0に戻ります。 (値はスライダの角度に基づいているので意味があります)

私はダイアルが359度から361度へと基本的に以降に移動する方法を見出そうとしています。

私の頭の中では、マウスドラッグの次の値が360度を超えているかどうかを確認し、360に合計を加えてゼロに戻して361度にする必要があります。

私はちょうどこれをコードに入れる方法を考えることはできません...

0

1 答え

ノブを回している各フレームで、直角の代わりに角度距離の変化を確認します。

前のフレームの角度を保存し、その差が正か負かを確認します。

var rad = Math.atan2(dy, dx);
var diff = rad - oldRad;
oldRad = rad;
if( diff > Math.PI )
  diff -= Math.PI * 2;
if( shortestAngle < -Math.PI )
  diff += Math.PI * 2;

diff should contain a value that if it's been rotated to the right, is positive (or negative if rotated left). Simply add that to the total angle.

コードにいくつかのエラーがあるかもしれませんが(古いプロジェクトから取りました)、それはそれの要点です:)

希望が助けてくれる!

0
追加された