Flash CS3-Dokumentation |
|||
| Programmieren mit ActionScript 3.0 > Verwenden von geometrischen Objekten > Verwenden von Rectangle-Objekten | |||
Mit einem Rectangle-Objekt wird ein rechteckiger Bereich definiert. Ein Rectangle-Objekt verfügt über eine Position, die durch die x- und y-Koordinate der linken oberen Ecke definiert ist, über eine width-Eigenschaft und eine height-Eigenschaft. Sie können diese Eigenschaften für ein neues Rectangle-Objekt festlegen, indem Sie den Rectangle()-Konstruktor aufrufen, wie im Folgenden dargestellt:
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);
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. Dies hat keine Auswirkung auf die Breite oder Höhe des Rectangle-Objekts.
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 wie mit dem folgenden Code die left- oder die top-Eigenschaft eines Rectangle-Objekts ändern, wird seine Position ebenfalls geändert. Die zugehörige x- und y-Eigenschaft entspricht dabei jeweils der left- bzw. der top-Eigenschaft. 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=30, y=20, w=70, h=30)
Wenn Sie, wie im folgenden Beispiel dargestellt, die bottom- oder die right-Eigenschaft eines Rectangle-Objekts ändern, ändert sich die Position der linken oberen Ecke nicht. Daher wird die Größe des Objekts 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 das Rechteck links und rechts von der Mitte verschoben wird, und der dy-Parameter gibt die Anzahl der Pixel an, um die das Rechteck oben und unten von der Mitte verschoben wird:
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.
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 Code wird beispielsweise 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 durch die Striche eines Anzeigeobjekts möglicherweise zu einem Begrenzungsbereich hinzugefügt wird.
Rectangle-Objekte werden bei den folgenden Methoden und Eigenschaften verwendet:
|
Klasse |
Methoden oder Eigenschaften |
Beschreibung |
|---|---|---|
|
BitmapData |
|
Wird als Typ für einige Parameter zum Definieren eines Bereichs des BitmapData-Objekts verwendet. |
|
DisplayObject |
|
Wird als Datentyp für die zurückgegebene Eigenschaft oder den zurückgegebenen Datentyp verwendet. |
|
PrintJob |
|
Wird zum Definieren des |
|
Sprite |
|
Wird zum Definieren des |
|
TextField |
|
Wird als Rückgabewerttyp verwendet. |
|
Transform |
|
Wird als Datentyp verwendet. |
Flash CS3
Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht
Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000187.html