O objeto
Rectangle
define uma área retangular. Um objeto Rectangle tem uma posição, definida pelas coordenadas
x
e
y
de seu canto superior esquerdo, uma propriedade
width
e uma propriedade
height
. Você pode definir essas propriedades para um novo objeto Rectangle chamando a função de construtor
Rectangle()
da seguinte forma:
import flash.geom.Rectangle;
var rx:Number = 0;
var ry:Number = 0;
var rwidth:Number = 100;
var rheight:Number = 50;
var rect1:Rectangle = new Rectangle(rx, ry, rwidth, rheight);
Redimensionamento e reposicionamento de objetos Rectangle
Há várias formas de redimensionar e reposicionar objetos Rectangle.
Você pode reposicionar o objeto Rectangle alterando suas propriedades
x
e
y
. Essa alteração não afeta a largura ou a altura do objeto Rectangle.
import flash.geom.Rectangle;
var x1:Number = 0;
var y1:Number = 0;
var width1:Number = 100;
var height1:Number = 50;
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1);
trace(rect1) // (x=0, y=0, w=100, h=50)
rect1.x = 20;
rect1.y = 30;
trace(rect1); // (x=20, y=30, w=100, h=50)
Como mostra o código a seguir, quando você altera a propriedade
left
ou
top
de um objeto Rectangle, o retângulo é reposicionado. As propriedades
x
e
y
do retângulo correspondem às propriedades
left
e
top
, respectivamente. Entretanto, a posição do canto inferior esquerdo do objeto Rectangle não é alterada, por isso ele é redimensionado.
import flash.geom.Rectangle;
var x1:Number = 0;
var y1:Number = 0;
var width1:Number = 100;
var height1:Number = 50;
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1);
trace(rect1) // (x=0, y=0, w=100, h=50)
rect1.left = 20;
rect1.top = 30;
trace(rect1); // (x=20, y=30, w=80, h=20)
Da mesma forma, como mostra o exemplo, se você alterar a propriedade
bottom
ou
right
de um objeto Rectangle, a posição de seu canto superior esquerdo não é alterada. O retângulo é realizado corretamente:
import flash.geom.Rectangle;
var x1:Number = 0;
var y1:Number = 0;
var width1:Number = 100;
var height1:Number = 50;
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1);
trace(rect1) // (x=0, y=0, w=100, h=50)
rect1.right = 60;
trect1.bottom = 20;
trace(rect1); // (x=0, y=0, w=60, h=20)
Você também pode reposicionar um objeto Rectangle usando o método
offset()
da seguinte maneira:
import flash.geom.Rectangle;
var x1:Number = 0;
var y1:Number = 0;
var width1:Number = 100;
var height1:Number = 50;
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1);
trace(rect1) // (x=0, y=0, w=100, h=50)
rect1.offset(20, 30);
trace(rect1); // (x=20, y=30, w=100, h=50)
O método
offsetPt()
funciona da mesma forma, exceto que assume um objeto Point como parâmetro, em vez dos valores de deslocamento
x
e
y
.
Você também pode redimensionar um objeto Rectangle usando o método
inflate()
, que inclui dois parâmetros,
dx
e
dy
. O parâmetro
dx
representa o número de pixels que os lados esquerdo e direito do retângulo se movem em relação ao centro. O parâmetro
dy
representa o número de pixels que os lados superior e inferior do retângulo se movem em relação ao centro.
import flash.geom.Rectangle;
var x1:Number = 0;
var y1:Number = 0;
var width1:Number = 100;
var height1:Number = 50;
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1);
trace(rect1) // (x=0, y=0, w=100, h=50)
rect1.inflate(6,4);
trace(rect1); // (x=-6, y=-4, w=112, h=58)
O método
inflatePt()
funciona da mesma forma, exceto que assume um objeto Point como parâmetro, em vez dos valores de deslocamento
dx
e
dy
.
Localização de uniões e interseções de objetos Rectangle
Você usa o método
union()
para localizar a região retangular formada pelos limites de dois retângulos:
import flash.display.*;
import flash.geom.Rectangle;
var rect1:Rectangle = new Rectangle(0, 0, 100, 100);
trace(rect1); // (x=0, y=0, w=100, h=100)
var rect2:Rectangle = new Rectangle(120, 60, 100, 100);
trace(rect2); // (x=120, y=60, w=100, h=100)
trace(rect1.union(rect2)); // (x=0, y=0, w=220, h=160)
Você usa o método
intersection()
para localizar a região retangular formada pela região sobreposta de dois retângulos:
import flash.display.*;
import flash.geom.Rectangle;
var rect1:Rectangle = new Rectangle(0, 0, 100, 100);
trace(rect1); // (x=0, y=0, w=100, h=100)
var rect2:Rectangle = new Rectangle(80, 60, 100, 100);
trace(rect2); // (x=120, y=60, w=100, h=100)
trace(rect1.intersection(rect2)); // (x=80, y=60, w=20, h=40)
O método
intersects()
é usado para descobrir se há interseção de dois retângulos. O método
intersects()
também pode ser usado para descobrir se um objeto de exibição está em uma determinada região do Palco. No código de exemplo a seguir, suponha que o espaço de coordenadas do contêiner de objetos de exibição que inclui o objeto
circle
seja o mesmo do palco. O exemplo mostra como usar o método
intersects()
para determinar se há interseção de um objeto de exibição,
circle
, com regiões especificadas do Palco, definidas pelos objetos Rectangle
target1
e
target2
:
import flash.display.*;
import flash.geom.Rectangle;
var circle:Shape = new Shape();
circle.graphics.lineStyle(2, 0xFF0000);
circle.graphics.drawCircle(250, 250, 100);
addChild(circle);
var circleBounds:Rectangle = circle.getBounds(stage);
var target1:Rectangle = new Rectangle(0, 0, 100, 100);
trace(circleBounds.intersects(target1)); // false
var target2:Rectangle = new Rectangle(0, 0, 300, 300);
trace(circleBounds.intersects(target2)); // true
Da mesma forma, o método
intersects()
pode ser usado para descobrir se os retângulos delimitadores de dois objetos de exibição se sobrepõem. Use o método
getRect()
da classe DisplayObject para incluir qualquer espaço adicional que os traçados de um objeto de exibição adicionam a uma região delimitadora.
Outros usos de objetos Rectangle
Os objetos Rectangle são usados nos seguintes métodos e propriedades:
Classe
|
Métodos ou propriedades
|
Descrição
|
BitmapData
|
applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), drawWithQuality(), encode(), fillRect(), generateFilterRect(), getColorBoundsRect(), getPixels(), merge(), paletteMap(), pixelDissolve(), setPixels() e threshold()
|
Usada como o tipo para alguns parâmetros a fim de definir uma região do objeto BitmapData.
|
DisplayObject
|
getBounds(), getRect(), scrollRect, scale9Grid
|
Usada como o tipo de dados para a propriedade ou o tipo de dados retornado.
|
PrintJob
|
addPage()
|
Usada para definir o parâmetro
printArea
.
|
Sprite
|
startDrag()
|
Usada para definir o parâmetro
bounds
.
|
TextField
|
getCharBoundaries()
|
Usada como um tipo de valor de retorno.
|
Transform
|
pixelBounds
|
Usada como o tipo de dados.
|
|
|
|