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

Unterthemen

Ändern der Größe und der Position von Rectangle-Objekten
Vereinigungen und Überschneidungen von Rectangle-Objekten
Andere Verwendungen von Rectangle-Objekten

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

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

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(), 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.


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