Actionscript 3 计算movieclip旋转的度数
我有一个代表箭头的movieclip(中间有一个注册点)。当我点击一个按钮时,箭头必须指向舞台上的某个电影剪辑。我使用此代码执行Tween: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); 你能帮我吗 [编辑]:我发现以下
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空间相关的部分)。非常感谢你!