2011-06-27 50 views
0

我需要根据鼠标拖动使MovieClip围绕其中心点向左或向右旋转。我得到了一些我想要的东西的基本表象,但它很骇人听闻。通常我会计算角度等,但我只需要使用鼠标移动的距离并将其应用到动画片段,并且在放手时添加一些很好的缓动。在ActionScript中拖动,旋转和放松

public function Main() 
    { 
     var wereld:MainScreen = new MainScreen(); 
     addChild(wereld); 
     wereld.x = -510; 

     planet = wereld["planet"]; 

     wereld.addEventListener(MouseEvent.MOUSE_DOWN, startRotatingWorld); 
    } 
    private function startRotatingWorld(e:MouseEvent):void 
    { 
     m_mouseStartPos = stage.mouseX; 

     stage.addEventListener(MouseEvent.MOUSE_UP, stopRotatingWorld); 
     stage.addEventListener(Event.MOUSE_LEAVE, stopRotatingWorld); 
    } 
    private function applyRotationToWorld(e:MouseEvent):void 
    { 
     //Calculate the rotation 
     var distance:Number = (m_mouseStartPos - stage.mouseX)/10000; 
     //apply rotation 
     planet.rotation += -distance //* 180/Math.PI; 
    } 
    private function stopRotatingWorld():void 
    { 
     stage.removeEventListener(MouseEvent.MOUSE_MOVE, applyRotationToWorld); 
    } 

回答

1

这里的来源和可能的解决方案演示给你: http://wonderfl.net/c/o8t0

我根据基思彼得minimalcomps拖动旋转检测,特别是sourceknob component

Minimal Comp's Knob source,你可以在'onMouseMoved'函数中获得旋转,水平和垂直移动。

最后我用​​来处理宽松回来。在我的代码中,我调用了'this'对象,但实际上,您应该在您正在补间并补间该项目的对象中创建一个公共值,以便您可以更轻松地补间一个项目。

如果这是面向公众的项目,请告诉我您何时实施它;不介意看看它是什么^ _^

+0

我发现了另一个我实现的解决方案。如果你想我可以展示给你。然而,你的答案是相当不错的,因为你的解决方案,所以我会把它设置为解决:) – Zophiel