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.
|
|
|
|