【发布时间】:2011-05-09 20:47:38
【问题描述】:
我正在尝试制作一些与中心点相关的位图动画。它们并非都从那个中心点开始,但我希望它们飞出,就好像来自那个中心点的力猛烈撞击它们并径向向外推动它们,使它们完全飞离舞台。
所以:我知道中心点,以及围绕它排列的每个位图的 x 和 y 位置。对于每一个,我可以从中心画一条线到那个 x,y 点。然后我应该能够得到该线与水平线形成的角度,然后在那条线上设置一个更远的目标点。位图将被补间到该点。我相信这就是 Math.atan2 的用途。
这是我在遍历位图数组时得到的结果(i 是一个对象):
var angle:Number = Math.atan2(i.bitmap.y - centerY, i.bitmap.x - centerX) * 180 / Math.PI;
var dist:Number = 200; //arbitrary number, just to test
destX = centerX + dist * Math.cos(angle); //destination x
destY = centerY + dist * Math.sin(angle); //destination y
这些东西不是径向滑出,而是四处跳跃。
我无法理解 atan2 以及我做错了什么。
谢谢,
大卫
【问题讨论】:
-
只是为了添加答案,如果可能的话,您可以使用 MatrixTransformer 帮助器类:help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/… 它的 rotateAroundExternalPoint() 和 rotateAroundInternalPoint() 方法
标签: actionscript-3 atan2