AS3 - 如何找到物体相对于舞台的位置?

时间:2011-05-17 07:07:45

标签: flash actionscript-3

如果我在舞台上有一个矩形,我如何找到它相对于舞台的左上尖端(x,y)和右下尖端(x,y)?奇怪的是我怎么在谷歌上找不到这个!

4 个答案:

答案 0 :(得分:19)

localToGlobal(point)

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));

答案 1 :(得分:4)

您可以在一行中执行此操作,例如如果您添加的容器也是DisplayObject,您可以写:

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

这会直接跳到相对于舞台的矩形。然后,您可以访问您特别提到的值:

rect.bottomRight
rect.topLeft

答案 2 :(得分: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;

答案 3 :(得分:1)

如果displayobject没有从movieclip的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;