回転 TransformGestureEvent を使用して時計回りに 120 度、反時計回りに 120 度回転するダイヤルがあります。
このダイヤルを回すと、ムービー クリップを制御できるようになります。ダイヤルを時計回りに回転させながらムービークリップをドラッグし、ダイヤルを反時計回りに回転させてムービークリップを反転します。ムービークリップがダイヤルのドラッグに追従し、ダイヤルをドラッグすると停止および開始するようにします。
これは私がこれまでに持っているものですが、ムービークリップを最後のフレームに回して停止するように見えるだけですか?
import flash.display.MovieClip;
var dial_mc:MovieClip;
var knobs_mc:MovieClip;
var maxRotation:Number = 120;
var knobFrame:int = knobs_mc.currentFrame;
var offset:Number = 0;
var percent:Number = 0;
knobs_mc.stop();
Multitouch.inputMode = MultitouchInputMode.GESTURE;
dial_mc.addEventListener(TransformGestureEvent.GESTURE_ROTATE, rotateDial);
function rotateDial(e:TransformGestureEvent):void
{
dial_mc.rotation += e.rotation;
if (dial_mc.rotation > maxRotation)
{
dial_mc.rotation = maxRotation;
}
if (dial_mc.rotation < 0)
{
dial_mc.rotation = 0;
}
dial_mc.addEventListener(TransformGestureEvent.GESTURE_ROTATE, drag);
offset = e.rotation;
if (e.phase == GesturePhase.END)
{
knobFrame = knobs_mc.currentFrame;
}
function drag(e:TransformGestureEvent):void
{
percent = (e.rotation - offset)/knobs_mc.rotation;
var frame:int = Math.round(percent * knobs_mc.totalFrames) + knobFrame;
while (frame > knobs_mc.totalFrames)
{
frame -= knobs_mc.totalFrames;
}
while (frame <= 0)
{
frame += knobs_mc.totalFrames;
}
knobs_mc.gotoAndStop(frame);
}
}