0

私のフラッシュ ファイルには、車輪があります。ユーザーは、矢印を使用して次の「セグメント」にジャンプすることで、ホイールを回転させることができます (ホイールの円周を形成する互いに取り付けられた 20 個の画像を考えてください)。 車輪

矢印をクリックすると、次のコードが開始されます。

protected function rotate():void
        {
            var rotateTo:Number = (-360 / numItems) * currentItem + 90;
            TweenLite.to(planesHolder, 1, { rotationY:rotateTo, ease:Quint.easeInOut } );
        }

しかし、私ができるようにしたいのは、クリック アンド ドラッグしてホイールを回転させ、加速と減速を完了し、ホイールが特定の速度に減速したときに最も近い画像に落ち着くことです。これを行う方法がわかりません。カーソルの前後の位置を検出し、これをホイールの速度に変換して、時間の経過とともに減速し、特定の位置に最も近い画像を検出する必要があります。速度を上げて「スナップ」し、上下にスクロールします。(Y 軸にのみ影響します)

どんな助けでもいただければ幸いです

4

1 に答える 1

1

マウスが押されている間、Enter_frame で前の位置への現在のオフセットを確認します。

private function enterFrameHandler(e:Event)
{
  offset = oldy - oldMousePosition;
  oldy = oldMousePosition
}

これにより、現在の速度が得られます。(明らかに、ホイールの場合は、enterFrame の「wheel.rotation += offset / some_value_to_slow_it_down」です)。

「イージング」を導入するには、摩擦変数を使用できます。

繰り返しますが、enterFrame イベントで:

offset *= .8;

次に、次の画像にスナップするために、現在の速度がどれだけ速いかを確認します。特定の許容範囲を下回っている場合は、速度を 0 に設定し、最も近い値に緩和します。(ご想像のとおり、enterFrame イベントで再び

if(offset < 1)
{
  offset = 0;
  //calculate the nearest value of the wheel
  //tweenlite right over there
}
于 2010-10-28T11:53:03.187 に答える