Verwenden von Rectangle-ObjektenFlash 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-ObjektenDie 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-ObjektenMithilfe 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-ObjektenRectangle-Objekte werden bei den folgenden Methoden und Eigenschaften verwendet:
|
|