0

感谢您花时间阅读我的问题。所以,我有一个添加到舞台的影片剪辑,其中有另一个影片剪辑的实例。让我们将另一个第一个影片剪辑称为 A。第二个的实例名称将是 thing。所以我这样做:

var a:A = new A();
stage.addChild(a);

这很好,a 的坐标很好,但 a.thing.x 始终基于它与 a 的距离。有什么方法可以让 a.thing.x 在舞台坐标系上显示?我希望我的问题足够清楚。

4

1 回答 1

0
// 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/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#globalToLocal%28%29

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#localToGlobal%28%29

在评论中回答您的问题:

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 依此类推

更方便

于 2013-01-13T14:23:43.933 回答