Uso de objetos RectangleFlash Player 9 e posterior, Adobe AIR 1.0 e posterior 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 RectangleHá 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 RectangleVocê 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 RectangleOs objetos Rectangle são usados nos seguintes métodos e propriedades:
|
![]() |