我需要让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 );
}
答案 0 :(得分:1)
这里是您的潜在解决方案的来源和演示: http://wonderfl.net/c/o8t0
我基于keith peter minimalcomps的拖动旋转检测,特别是source的knob component 3>
在Minimal Comp's Knob source中,您可以在'onMouseMoved'功能中获得旋转,水平和垂直移动。
最后我使用TweenLite来处理缓和。在我的代码中我补间'this'对象,但实际上你应该在你补间和补间该项的对象中创建一个公共值,这样你就可以轻松地补充更多的那一项。
如果这是面向公众的项目,请在实施后告知我们;我不介意看看它是什么^ _ ^