我有两个矩形:
var rect1:Rectangle = new Rectangle(66,147,89,67);
var rect2:Rectangle = new Rectangle(155,147,89,67);
如何根据它们的 x 和 y 位置计算这些矩形的中心点。我希望相对于舞台计算中心点
我有两个矩形:
var rect1:Rectangle = new Rectangle(66,147,89,67);
var rect2:Rectangle = new Rectangle(155,147,89,67);
如何根据它们的 x 和 y 位置计算这些矩形的中心点。我希望相对于舞台计算中心点
在全球方式。首先,您需要在这种情况下找到矩形的最小和最大点。比你需要使用 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) 结果是相对于舞台的位置
解决方案很简单 - 首先定义第三个矩形的边界,覆盖两个矩形并计算该矩形的中心。
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;