2011-05-17 51 views

回答

19

localToGlobal(point) of DisplayObject将点对象从显示对象的(本地)坐标转换为舞台(全局)坐标。

// assuming (0, 0) is top left 
var topLeftStage:Point = myDisplayObject.localToGlobal(new Point(0, 0)); 

// bottom right 
var bottomRightStage:Point = myDisplayObject.localToGlobal(new Point(width, height)); 
+0

嗨,谢谢你的帮助。我怎么才能找到左边的x和右边的x? – muudles 2011-05-18 00:37:12

+0

点具有属性x和y。您可以使用topLeftStage.x来获取x坐标。 – taskinoor 2011-05-18 05:50:58

2

如果你的对象是在一个容器那么你可以只减去物体的位置容器的位置。

var rawx:Number = x - parent.x; 
var rawy:Number = y - parent.y; 

其他使用localToGlobal()像上面那样。


查找对象的左上角和右下角点很容易 - 但您需要知道符号的注册点在哪里。

如果注册点在符号的中心:

var left:Number = x - (width/2); 
var right:Number = x + (width/2); 
var top:Number = y - (height/2); 
var bottom:Number = y + (height/2); 

如果它是在左上角:

var left:Number = x; 
var right:Number = x + width; 
var top:Number = y; 
var bottom:Number = y + height; 

等等

+0

感谢您的评论。不幸的是我需要左侧的x和右侧的x。我同意,确定x和y会很容易。 – muudles 2011-05-18 00:36:25

+0

我会更新我的答案。 – Marty 2011-05-18 00:46:22

1

如果DisplayObject不启动在0,0的动画片段,你需要这个:

var skin:DisplayObject = ... //the MC you need to get positions of 
var point : Point = skin.localToGlobal(new Point(skin.getBounds(skin).x,skin.getBounds(skin).y)); 
var point2 : Point = skin.localToGlobal(new Point(skin.getBounds(skin).x+skin.getBounds(skin).width,skin.getBounds(skin).y+skin.getBounds(skin).height)); 

,其结果将是:

x=point.x; 
y=point.y; 
width=point2.x-point.x; 
heigth=point2.y-point.y; 
+0

可能看起来并不需要,但如果scaleX涉及父母之一,则需要。 – csomakk 2012-09-18 09:17:09

4

您可以在同一行,例如做如果您添加的显示对象也是DisplayObject,那么您可以编写:

var rect:Rectangle = yourDisplayObject.getBounds(stage); 

这将直接跳转到相对于舞台的矩形。您可以访问您提到的具体值:

rect.bottomRight 
rect.topLeft