Rectangle-objecten gebruiken

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Een Rectangle -object definieert een rechthoekig gebied. Een Rectangle-object heeft een positie, gedefinieerd door de coördinaten x en y van de linkerbovenhoek ervan, een eigenschap width en een eigenschap height . U kunt deze eigenschappen definiëren voor een nieuw Rectangle-object door de constructorfunctie Rectangle() als volgt aan te roepen:

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

De grootte en positie van Rectangle-objecten wijzigen

Er zijn enkele manieren om de grootte en positie van Rectangle-objecten te wijzigen.

U kunt de positie van het object Rectangle rechtstreeks wijzigen door de eigenschappen x en y ervan te wijzigen. Deze wijziging is niet van invloed op de breedte of hoogte van het Rectangle-object.

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)

Als u de eigenschap left of de eigenschap top van een Rectangle-object wijzigt, wordt de rechthoek geherpositioneerd. Dit wordt door de volgende code gedemonstreerd. De eigenschappen x en y van de rechthoek komen overeen met respectievelijk de eigenschappen left en top . De positie van de linkerbenedenhoek van het Rectangle-object verandert echter niet, zodat de grootte wordt gewijzigd.

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)

Zo ziet u in het volgende voorbeeld dat bij het wijzigen van de eigenschap bottom of right van een Rectangle-object de positie van de linkerbovenhoek niet verandert. De rechthoek wordt dienovereenkomstig gewijzigd:

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)

U kunt de positie van een object Rectangle ook als volgt wijzigen met behulp van de methode offset() :

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)

De methode offsetPt() werkt op een soortgelijke manier. Alleen wordt daarbij een object Point als parameter gebruikt in plaats van verschuivingswaarden voor x en y .

U kunt ook de grootte van een object Rectangle wijzigen met de methode inflate() en de twee parameters dx en dy . De parameter dx representeert het aantal pixels waarmee de linker- en de rechterkant van de rechthoek van het midden worden verplaatst. De parameter dy representeert het aantal pixels waarmee de boven- en de onderkant van de rechthoek van het midden worden verplaatst:

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)

De methode inflatePt() werkt op een soortgelijke manier. Alleen wordt daarbij een object Point als parameter gebruikt in plaats van waarden voor dx en dy .

Samenvoegingen en snijpunten van Rectangle-objecten zoeken

Met de methode union() kunt u het rechthoekig gebied vinden dat wordt gevormd door de randen van twee rechthoeken:

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)

Met de methode intersection() kunt u het rechthoekige gebied vinden dat wordt gevormd door de overlappende gebieden van twee rechthoeken:

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)

Met de methode intersects() kunt u nagaan of twee rechthoeken elkaar snijden. Met de methode intersects() kunt u ook nagaan of een weergaveobject zich in een bepaald gebied van het werkgebied bevindt. Ga er in de volgende codevoorbeeld van uit dat de coördinaatruimte van de weergaveobjectcontainer met het object circle gelijk is aan die van het werkgebied. Het voorbeeld laat zien hoe u met de methode intersects() kunt bepalen of een weergaveobject, circle , bepaalde gebieden in het werkgebied snijdt, gedefinieerd door de Rectangle-objecten target1 en 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

Met de methode intersects() kunt u zo ook nagaan of de selectierechthoeken van twee weergaveobjecten elkaar overlappen. Gebruik de methode getRect() van de klasse DisplayObject om de extra ruimte op te geven die door de streken van een weergaveobject aan een selectiegebied wordt toegevoegd.

Andere toepassingen van het object Rectangle

U kunt Rectangle-objecten gebruiken in de volgende methoden en eigenschappen:

Klasse

Methoden of eigenschappen

Beschrijving

BitmapData

applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), drawWithQuality(), encode(), fillRect(), generateFilterRect(), getColorBoundsRect(), getPixels(), merge(), paletteMap(), pixelDissolve(), setPixels() en threshold()

Hiermee geeft u het type op voor sommige parameters om een gebied van het object BitmapData te definiëren.

DisplayObject

getBounds(), getRect(), scrollRect, scale9Grid

Hiermee geeft u het gegevenstype op voor de eigenschap of het gegevenstype dat wordt geretourneerd.

PrintJob

addPage()

Hiermee definieert u de parameter printArea .

Sprite

startDrag()

Hiermee definieert u de parameter bounds .

TextField

getCharBoundaries()

Hiermee geeft u het type van de geretourneerde waarde op.

Transform

pixelBounds

Hiermee geeft u het gegevenstype op.