Actionscript 3 计算movieclip旋转的度数

Actionscript 3 计算movieclip旋转的度数,actionscript-3,math,Actionscript 3,Math,我有一个代表箭头的movieclip(中间有一个注册点)。当我点击一个按钮时,箭头必须指向舞台上的某个电影剪辑。我使用此代码执行Tween: TweenLite.to(arrow_clip,1,{rotation:degrees}); 但是我不知道怎么计算度数。 我尝试了以下方法,但没有成功: var degrees =Math.atan2((clip.y-arrow_clip.y),(clip.x-arrow_clip.x))*(180/Math.PI); 你能帮我吗 [编辑]:我发现以下

我有一个代表箭头的movieclip(中间有一个注册点)。当我点击一个按钮时,箭头必须指向舞台上的某个电影剪辑。我使用此代码执行Tween:

TweenLite.to(arrow_clip,1,{rotation:degrees});
但是我不知道怎么计算度数。 我尝试了以下方法,但没有成功:

var degrees =Math.atan2((clip.y-arrow_clip.y),(clip.x-arrow_clip.x))*(180/Math.PI);
你能帮我吗

[编辑]:我发现以下方法有效,但我无法完全理解原因:

var degrees = -(Math.atan2(arrow_clip.x-clip.x, arrow_clip.y-clip.y))*(180/Math.PI);

我相信您“镜像”了角度。

您的上一个解决方案不计算(剪辑,箭头剪辑)之间的角度,而是将其旋转90°C,即PI/2

要找到两点之间的角度,可以使用:

atan(dy/dx)
atan2(dy,dx)

其中
dy=to.y-from.y
dx=to.x-from.x

这将从水平轴获得弧度,0位于右侧。然而,Flash中的
旋转
属性与垂直轴成度,0表示向上。所以你需要把它转换成度,然后旋转90度,因为如果atan表示0弧度,那么在Flash空间中,这是90度,-PI/2弧度=0度,依此类推

以下方面应起作用:

var degrees = Math.atan2(clip.y-arrow_clip.y,clip.x-arrow_clip.x)*(180/Math.PI) + 90;

您发布的第二个示例之所以有效,是因为它通过围绕轴切换并反转结果来进行90度旋转。它从
剪辑
计算到
箭头
,然后执行
-atan(dx/dy)
。注意,它的
dx
超过
dy
(而不是它应该是什么),并否定结果。基本上是为你做90度旋转。

嗯,“镜像”。。。是吗?我不明白的不是减号:我不明白为什么atan2的y参数是arrow_clip.x-clip.x的结果。我的上一个解决方案总是有效的,但我不明白为什么:-)第二部分(代码之后)我很清楚。这是我无法理解的(与Flash空间相关的部分)。非常感谢你!