我有一个表示箭头的动画片段(中间有注册点)。单击按钮时,箭头必须指向舞台上的某个动画片段。我使用此代码执行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);
答案 0 :(得分:0)
我相信你“反映”了这个角度。
答案 1 :(得分:0)
您的上一个解决方案不会计算(clip,arrow_clip)之间的角度,而是将其旋转90°C,即PI / 2。
答案 2 :(得分:0)
要查找两点之间的角度,您可以使用:
atan(dy/dx)
或atan2(dy,dx)
其中dy = to.y - from.y
和dx = 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度旋转。它从clip
到arrow
计算,然后-atan(dx/dy)
。请注意它的dx
超过dy
(而不是它应该是什么)并否定结果。基本上为你做90度旋转。