感谢您花时间阅读我的问题。所以,我有一个添加到舞台的影片剪辑,其中有另一个影片剪辑的实例。让我们将另一个第一个影片剪辑称为 A。第二个的实例名称将是 thing。所以我这样做:
var a:A = new A();
stage.addChild(a);
这很好,a 的坐标很好,但 a.thing.x 始终基于它与 a 的距离。有什么方法可以让 a.thing.x 在舞台坐标系上显示?我希望我的问题足够清楚。
感谢您花时间阅读我的问题。所以,我有一个添加到舞台的影片剪辑,其中有另一个影片剪辑的实例。让我们将另一个第一个影片剪辑称为 A。第二个的实例名称将是 thing。所以我这样做:
var a:A = new A();
stage.addChild(a);
这很好,a 的坐标很好,但 a.thing.x 始终基于它与 a 的距离。有什么方法可以让 a.thing.x 在舞台坐标系上显示?我希望我的问题足够清楚。
// position in stage coordinate system
var targetAbsolutePoint:Point = new Point(100, 100);
// position in "a" MovieClip coordinate system
var targetRelativePoint:Point = a.globalToLocal(targetAbsolutePoint);
// set position
thing.x = targetRelativePoint.x;
thing.y = targetRelativePoint.y;
在评论中回答您的问题:
http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7df5.html
DisplayObject 的“x”和“y”属性相对于其父显示对象轴的 0,0 坐标。
因此,如果“a”MovieClip 位于 (10, 50) 点,“thing”MovieClip 位于“a”MovieClip 内的 (20, 40) 点,那么为了找到“thing”MovieClip 的绝对坐标,我们应该计算:
x = "a" MovieClip 的 "x" 坐标 + "thing" MovieClip 的 "x" 坐标 = 10 + 20 = 30
和
y = "a" MovieClip 的 "y" 坐标 + "thing" MovieClip 的 "y" 坐标 = 50 + 40 = 90
但是因为可能有几个嵌套的父 DisplayObjects 所以使用 localToGlobal 和 globalToLocal 方法而不是
absoluteX = 我的影片剪辑的 x + 我的影片剪辑父项的 x + 我的影片剪辑父项的父项的 x 依此类推
更方便