2012-11-28 3 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

당신은 당신이 전체 범위를 얻을 수있는 프레임으로 이동하려고 할 때 240 0 120 -120에서 그 방법을 각도를지도하기 위해 수학을 조정해야합니다. 나는 프레임 1 - 120이 다이얼을 왼쪽으로 가리키고 있다고 가정하고있다.

하나의 다른 접근법은 프레임을 모두 도려내고 각도를 사용하여 다이얼을 직접 회전시키는 것입니다.

+0

dial_mc는 제스처 Roation을 사용하기 때문에 프레임이 없지만 회전하고 차례로 knobs_mc를 재생하고 중지하고 싶습니다. – Danielle

+0

임 매우 새로운 AS3에 새로운 그래서 그냥 시행 착오에 내가 아직 모든 지식을 가지고 일하고있어! 그러나 기본적으로 dial_mc는 돌리면 돌리면 머리쪽으로 다이얼의 작은 이미지 (knobs_mc)가 knobs_mc에서 활성화되어 함께 재생할 때처럼 돌리는 것처럼 5 개의 샷이 표시됩니다. 이게 말이 돼? – Danielle

+0

현재 값에 회전을 추가합니다. 원하는 값입니까? 이벤트가 회전 변화를 보여 주나 현재 회전을 표시합니까? 어쨌든 최대 회전은 240이어야하고 0 회전에서 시작하는 경우 다이얼은 120이어야합니다. 그러나 플래시도 Radian을 사용하므로 이벤트 처리기에서 회전 각도를 다시 얻으려면 다음과 같이 변환해야합니다. 그들을 라디안으로 바꾸고 회전에 추가하십시오. 다시 말하지만 디버거 또는 트레이스를 사용하여 어떤 값을 얻었는지 확인하여 수학을 확인하십시오. – Gone3d

관련 문제