Flash的协调系统

时间:2013-01-13 14:13:21

标签: actionscript-3

感谢您抽出宝贵时间阅读我的问题。 所以,我有一个我添加到舞台的movieclip,里面有另一个movieclip的实例。让我们调用另一个第一个movieclip A.第二个的实例名称将是东西。所以我这样做:

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

这很好,a的坐标很好但a.thing.x总是基于它与a的距离。有没有办法让a.thing.x显示在舞台的坐标系上? 我希望我的问题足够清楚。

1 个答案:

答案 0 :(得分: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坐标。

因此,如果位于(10,50)点的“a”MovieClip和位于(20,40)内的“thing”MovieClip指向“a”MovieClip内部,那么为了找到“thing”MovieClip的绝对坐标,我们应该计算:

x =“x”坐标“a”MovieClip +“x”坐标“thing”MovieClip = 10 + 20 = 30

y =“y”坐标“a”MovieClip +“y”coordiante of“thing”MovieClip = 50 + 40 = 90

但是因为有可能有几个嵌套的父DisplayObject,所以使用localToGlobal和globalToLocal方法而不是

我的影片剪辑的movieXip + x的绝对X = x我的影片剪辑父亲的父亲的x + x等等

更方便

相关问题