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);
}
}
dial_mc只是使用手勢Roation並沒有框架,但我想這個旋轉,並進而播放和停止knobs_mc。 – Danielle
我很新的AS3所以即時通訊只是在試驗和錯誤工作我真的沒有所有的知識呢!但基本上dial_mc是一個大表盤的頭部,當轉動時它將激活一個較小的撥盤圖像(knobs_mc)在knobs_mc中是5個鏡頭,當它們一起演奏時就好像它們正在轉動一樣。這有意義嗎? – Danielle
您正在將旋轉添加到當前值 - 是您想要的嗎?該事件是否顯示了旋轉的變化或是否給出了當前旋轉?在任何情況下,最大旋轉角度應爲240°,如果從0°旋轉角度開始,則旋鈕應該是120°。但是,閃光燈也使用了弧度,因此旋轉度從事件處理器返回角度,您需要轉換他們弧度並將其添加到旋轉。再次檢查你的數學運算,使用調試器或跟蹤來查看你得到的值。 – Gone3d