Рассчитать центральную точку прямоугольника в flex - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть два прямоугольника:

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

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

Как рассчитать центральную точку этих прямоугольников на основе их координат x и y. Я хочу, чтобы центральная точка была рассчитана относительно этапа

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

глобальным путем. Сначала вам нужно найти минимальные и максимальные точки ваших фигур в этом случае прямоугольников. Чем вам нужно использовать 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 var: Point = новая точка (min.x + (max.x-min.x) /2,min.y+ (max.y-min.y) / 2) если ваши прямоугольники находятся в другом контейнере, а не на сцене ты можешь позвонить contaner.localToGLobal (центр) результат - точка, которая является положением относительно стадии

0 голосов
/ 23 февраля 2012

Решение простое - сначала определите границы третьего прямоугольника, который охватывает оба прямоугольника, и вычислите центр этого прямоугольника.

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