计算动画片段旋转的度数

时间:2011-09-06 12:09:04

标签: actionscript-3 math

我有一个表示箭头的动画片段(中间有注册点)。单击按钮时,箭头必须指向舞台上的某个动画片段。我使用此代码执行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);

3 个答案:

答案 0 :(得分:0)

我相信你“反映”了这个角度。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

这将从水平轴获得弧度,0在右侧。但是,Flash中的rotation属性是垂直轴的度数,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度旋转。它从cliparrow计算,然后-atan(dx/dy)。请注意它的dx超过dy(而不是它应该是什么)并否定结果。基本上为你做90度旋转。