Verwenden von Rectangle-Objekten

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Ein Rectangle -Objekt definiert einen rechteckigen Bereich. Ein Rectangle-Objekt verfügt über eine Position, die durch die x - und y -Koordinaten der linken oberen Ecke definiert wird, sowie über width - und height -Eigenschaften. Sie können diese Eigenschaften für ein neues Rectangle-Objekt definieren, indem Sie die Rectangle() -Konstruktorfunktion aufrufen, wie im Folgenden gezeigt:

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

Ändern der Größe und der Position von Rectangle-Objekten

Die Größe und die Position von Rectangle-Objekten kann auf verschiedene Weise geändert werden.

Sie können die Position des Rectangle-Objekts direkt ändern, indem Sie die zugehörige x - und y -Eigenschaft ändern. Diese Änderung wirkt sich nicht auf die Breite und Höhe des Rectangle-Objekts aus.

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)

Wenn Sie die left - oder top -Eigenschaft eines Rectangle-Objekts ändern, wird das Rechteck neu positioniert, wie im folgenden Code gezeigt. Die x - und y -Eigenschaften des Rechtecks entsprechen den left - und top -Eigenschaften. Die Position der linken unteren Ecke des Rectangle-Objekts ändert sich jedoch nicht, daher wird die Größe des Objekts geändert.

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)

Wenn Sie die bottom - oder right -Eigenschaft eines Rectangle-Objekts ändern, ändert sich die Position der linken oberen Ecke nicht. Dies wird im folgenden Beispiel gezeigt. Die Größe des Rechtecks wird entsprechend geändert:

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)

Sie können ein Rectangle-Objekt zudem mithilfe der offset() -Methode folgendermaßen neu positionieren:

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)

Die Position kann mit der offsetPt() -Methode auf ähnliche Weise geändert werden. Bei dieser Methode wird jedoch als Parameter ein Point-Objekt und kein x - und y -Offset-Wert verwendet.

Sie können die Größe eines Rectangle-Objekts mithilfe der inflate() -Methode ändern, die die beiden Parameter dx und dy enthält. Der dx -Parameter gibt die Anzahl der Pixel an, um die die rechte und linke Seite des Rechtecks von der Mitte weg bewegt werden. Der dy -Parameter gibt die Anzahl der Pixel an, um die die obere und untere Seite des Rechtecks von der Mitte weg bewegt werden.

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)

Die Größe kann mit der inflatePt() -Methode auf ähnliche Weise geändert werden. Bei dieser Methode wird jedoch als Parameter ein Point-Objekt und kein dx - und dy -Wert verwendet.

Vereinigungen und Überschneidungen von Rectangle-Objekten

Mithilfe der union() -Methode können Sie den rechteckigen Bereich ermitteln, der durch die Begrenzungen zweier Rechtecke gebildet wird:

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)

Mithilfe der intersection() -Methode können Sie den rechteckigen Bereich ermitteln, der durch den sich überschneidenden Bereich zweier Rechtecke gebildet wird:

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)

Mit der intersects() -Methode können Sie ermitteln, ob sich zwei Rechtecke überschneiden. Darüber hinaus können Sie mit der intersects() -Methode ermitteln, ob sich ein Anzeigeobjekt in einem bestimmten Bereich der Bühne befindet. Im folgenden Codebeispiel wird davon ausgegangen, dass der Koordinatenraum des Anzeigeobjektcontainers, der das circle -Objekt enthält, mit dem Koordinatenraum der Bühne identisch ist. Im Beispiel ist dargestellt, wie mithilfe der intersects() -Methode festgestellt wird, ob das Anzeigeobjekt circle bestimmte Bereiche der Bühne überschneidet, die durch die Rectangle-Objekte target1 und target2 definiert sind:

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

Mit der intersects() -Methode können Sie ebenso ermitteln, ob sich die Begrenzungsrechtecke zweier Anzeigeobjekte überschneiden. Mit der getRect() -Methode der DisplayObject-Klasse können Sie den zusätzlichen Raum erfassen, der einem Begrenzungsbereich durch die Striche eines Anzeigeobjekts hinzugefügt wird.

Andere Verwendungen von Rectangle-Objekten

Rectangle-Objekte werden bei den folgenden Methoden und Eigenschaften verwendet:

Klasse

Methoden oder Eigenschaften

Beschreibung

BitmapData

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

Wird als Typ für einige Parameter zum Definieren eines Bereichs des BitmapData-Objekts verwendet.

DisplayObject

getBounds(), getRect(), scrollRect, scale9Grid

Wird als Datentyp für die zurückgegebene Eigenschaft oder den zurückgegebenen Datentyp verwendet.

PrintJob

addPage()

Wird zum Definieren des printArea -Parameters verwendet.

Sprite

startDrag()

Wird zum Definieren des bounds -Parameters verwendet.

TextField

getCharBoundaries()

Wird als Rückgabewerttyp verwendet.

Transform

pixelBounds

Wird als Datentyp verwendet.