Un objet
Rectangle
définit une zone rectangulaire. Un objet Rectangle possède une position, définie par les coordonnées
x
et
y
de son angle supérieur gauche, une propriété
width
et une propriété
height
. Pour définir les propriétés d’un nouvel objet Rectangle, appelez la fonction constructeur
Rectangle()
, comme suit :
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);
Redimensionnement et repositionnement des objets Rectangle
Il existe de nombreuses façons de redimensionner et de repositionner des objets Rectangle.
Vous pouvez redimensionner directement l’objet Rectangle en modifiant ses propriétés
x
et
y
. Ce changement n’a aucune incidence sur la largeur ou la hauteur de l’objet Rectangle.
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)
Comme l’illustre le code suivant, l’objet Rectangle est repositionné lorsque vous modifiez la propriété
left
ou
top
correspondante. Les propriétés
x
et
y
de l’objet rectangle correspondent respectivement aux propriétés
left
et
top
. Néanmoins, la position de l’angle inférieur gauche de l’objet Rectangle ne change pas. Par conséquent, il est redimensionné.
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)
De même, comme indiqué dans l’exemple suivant, si vous modifiez la propriété
bottom
ou
right
d’un objet Rectangle, la position de son angle supérieur gauche ne change pas. L’objet Rectangle est redimensionné en conséquence :
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)
Vous pouvez également repositionner un objet Rectangle à l’aide de la méthode
offset()
, comme suit :
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)
La méthode
offsetPt()
fonctionne de la même façon, sauf qu’elle prend un objet Point comme paramètre, plutôt que les valeurs de décalage
x
et
y
.
Vous pouvez également redimensionner un objet Rectangle à l’aide de la méthode
inflate()
, qui inclut deux paramètres,
dx
et
dy
. Le paramètre
dx
représente le déplacement à partir du centre des côtés droit et gauche de l’objet Rectangle, exprimé en pixels. Le paramètre
dy
représente le déplacement à partir du centre du haut et du bas de l’objet Rectangle, exprimé en pixels.
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)
La méthode
inflatePt()
fonctionne de la même façon, sauf qu’elle prend un objet Point comme paramètre, plutôt que les valeurs de décalage
dx
et
dy
.
Recherche d’unions et d’intersections d’objets Rectangle
Vous utilisez la méthode
union()
pour rechercher la région rectangulaire formée par les limites de deux rectangles :
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)
Vous utilisez la méthode
intersection()
pour rechercher la région rectangulaire formée par la région commune de deux rectangles :
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)
Vous utilisez la méthode
intersects()
pour savoir si deux rectangles se recouvrent. Vous pouvez également utiliser la méthode
intersects()
pour savoir si un objet d’affichage est dans une certaine région de la scène. Dans l’exemple de code suivant, supposez que l’espace de coordonnées du conteneur d’objet d’affichage contenant l’objet
circle
soit identique à celui de la scène. L’exemple indique comment utiliser la méthode
intersects()
pour déterminer si un objet d’affichage,
circle
, recoupe des régions spécifiées de la scène, définies par les objets Rectangle
target1
et
target2
:
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
De même, vous pouvez utiliser la méthode
intersects()
pour savoir si les cadres de délimitation de deux objets d’affichage se chevauchent. Utilisez la méthode
getRect()
de la classe DisplayObject pour inclure un espace supplémentaire que les traits d’un objet d’affichage ajoutent à une région de sélection.
Autres utilisations des objets Rectangle
Les objets Rectangle sont utilisés dans les propriétés et méthodes suivantes :
Classe
|
Méthodes ou propriétés
|
Description
|
BitmapData
|
applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), drawWithQuality(), encode(), fillRect(), generateFilterRect(), getColorBoundsRect(), getPixels(), merge(), paletteMap(), pixelDissolve(), setPixels() et threshold()
|
Utilisée comme type de certains paramètres pour définir une région de l’objet BitmapData.
|
DisplayObject
|
getBounds(), getRect(), scrollRect, scale9Grid
|
Utilisée comme type de données pour la propriété ou le type de données renvoyé.
|
PrintJob
|
addPage()
|
Utilisée pour définir le paramètre
printArea
.
|
Sprite
|
startDrag()
|
Utilisée pour définir le paramètre
bounds
.
|
TextField
|
getCharBoundaries()
|
Utilisée comme type de valeur renvoyé.
|
Transform
|
pixelBounds
|
Utilisée comme type de données.
|
|
|
|