在flex中计算矩形的中心点

时间:2012-02-23 10:55:57

标签: flex rect

我有两个矩形:

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

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

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

2 个答案:

答案 0 :(得分: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)结果是相对于阶段的位置

答案 1 :(得分: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; 
相关问题