在ActionScript中拖动,旋转和轻松

时间:2011-06-27 13:06:18

标签: actionscript rotation drag easing

我需要让MovieClip围绕它的中心点向左或向右旋转,具体取决于鼠标拖动。我对自己想要的东西有一些基本的相似之处,但它非常具有hackish。通常我会计算角度等,但我只需要使用鼠标移动的距离并将其应用于动画片段,并且当你放手时添​​加一些不错的缓和效果。

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 个答案:

答案 0 :(得分:1)

这里是您的潜在解决方案的来源和演示: http://wonderfl.net/c/o8t0

我基于keith peter minimalcomps的拖动旋转检测,特别是sourceknob component

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

最后我使用TweenLite来处理缓和。在我的代码中我补间'this'对象,但实际上你应该在你补间和补间该项的对象中创建一个公共值,这样你就可以轻松地补充更多的那一项。

如果这是面向公众的项目,请在实施后告知我们;我不介意看看它是什么^ _ ^