0

我需要根据鼠标拖动使 MovieClip 围绕其中心点向左或向右旋转。我对我想要的东西有一些基本的外表,但它很老套。通常我会计算角度等,但我只需要使用鼠标移动的距离并将其应用于影片剪辑,并在您放手时添加一些不错的缓动。

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 );   
    }
4

1 回答 1

1

这是为您提供的潜在解决方案的源代码和演示: http ://wonderfl.net/c/o8t0

我基于 keith peter 的minimumcomps进行拖动旋转检测,特别是他的旋钮组件的来源

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

最后,我使用TweenLite来处理缓动。在我的代码中,我对“this”对象进行了补间,但在实践中,您应该在您正在补间的对象中创建一个公共值并对该项目进行补间,这样您就可以轻松地对多个项目进行补间。

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

于 2011-06-29T04:54:46.370 回答