Как и в ActionScript 1 и 2, в ActionScript 3 есть метод getBounds() (
flash.display.DisplayObject.getBounds()), который вычисляет границу мувиклипа в системе координат любого объекта на timeline. Но в ActionScript 3 метод getBounds возвращает Rectangle (
flash.geom.Rectangle) вместо Object со свойствами xMin, xMax, yMin, yMax, как это было раньше.
В ActionScript 3 еще добавлен новый метод getRect() (
flash.display.DisplayObject.getRect()), который выполняет аналогичную задачу, но в отличие от getBounds не учитывает толщину линий (strokes on shapes).
В качестве наглядного примера, красный прямоугольник высчитывается по getBounds, а синий по getRect:
Код:
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0x999999);
sprite.graphics.lineStyle(10, 0x333);
sprite.graphics.drawCircle(100, 100, 50);
sprite.graphics.endFill();
addChild(sprite);
addChild(createRectShape(sprite.getRect(this), 0x0000FF));
addChild(createRectShape(sprite.getBounds(this), 0xFF0000));
function createRectShape(rect:Rectangle, color:uint):Shape {
var rectShape:Shape = new Shape();
rectShape.graphics.lineStyle(0, color);
rectShape.graphics.drawRect(rect.left, rect.top, rect.width, rect.height);
return rectShape;
}