0

我有两个矩形:

var rect1:Rectangle = new Rectangle(66,147,89,67);

var rect2:Rectangle = new Rectangle(155,147,89,67);

如何根据它们的 x 和 y 位置计算这些矩形的中心点。我希望相对于舞台计算中心点

4

2 回答 2

1

在全球方式。首先,您需要在这种情况下找到矩形的最小和最大点。比你需要使用 min.x+(max.x-min.x)/2 和 min.y+(max.y-min.y)/2

这是如何做到这一点的代码。

var rects:Array={rectangle1,rectangle2}
var min:Point=new Point(Number.MAX_VALUE,NUMBER.MAX_VALUE)
var max:Point=new Point(Number.MIN_VALUE,NUMBER.MIN_VALUE)
foreach(var rect:rectangle in rects)
{
    min.x=Math.min(min.x,rect.left);
    min.y=Math.min(min.y,rect.top);
    max.x=Math.max(max.x,rect.right);
    max.y=Math.max(max.y,rect.bottom);
}

var center:Point=new Point(min.x+(max.x-min.x)/2,min.y+(max.y-min.y)/2) 如果您的矩形在另一个容器中而不是在舞台上,您可以调用 contaner.localToGLobal(center) 结果是相对于舞台的位置

于 2012-02-24T00:28:41.360 回答
0

解决方案很简单 - 首先定义第三个矩形的边界,覆盖两个矩形并计算该矩形的中心。

var left:Number = rect1.x < rect2.x ? rect1.x : rect2.x;
var right:Number = rect1.x + rect1.width > rect2.x + rect2.width ? rect1.x + rect1.width - left : rect2.x + rect2.width - left;
var top:Number = rect1.y < rect2.y ? rect1.y : rect2.y;
var bottom:Number = rect1.y + rect1.height > rect2.y + rect2.height ? rect1.y + rect1.height - top : rect2.y + rect2.height - top;

var centerX:Number = left + 0.5 * right;
var centerY:Number = top + 0.5 * bottom; 
于 2012-02-23T11:19:51.257 回答