2012-11-28 15 views
1

我有一個撥盤,使用旋轉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); 
} 
    } 

回答

1

你要調整你的數學的角度從-120到120這樣映射到0〜240,當你試圖去一個框架,你可以得到全方位的。我假設第1 - 120幀的指針在左側。

另一種方法是將框架完全交錯,並使用角度直接旋轉錶盤。

+0

dial_mc只是使用手勢Roation並沒有框架,但我想這個旋轉,並進而播放和停止knobs_mc。 – Danielle

+0

我很新的AS3所以即時通訊只是在試驗和錯誤工作我真的沒有所有的知識呢!但基本上dial_mc是一個大表盤的頭部,當轉動時它將激活一個較小的撥盤圖像(knobs_mc)在knobs_mc中是5個鏡頭,當它們一起演奏時就好像它們正在轉動一樣。這有意義嗎? – Danielle

+0

您正在將旋轉添加到當前值 - 是您想要的嗎?該事件是否顯示了旋轉的變化或是否給出了當前旋轉?在任何情況下,最大旋轉角度應爲240°,如果從0°旋轉角度開始,則旋鈕應該是120°。但是,閃光燈也使用了弧度,因此旋轉度從事件處理器返回角度,您需要轉換他們弧度並將其添加到旋轉。再次檢查你的數學運算,使用調試器或跟蹤來查看你得到的值。 – Gone3d

相關問題