Utilisation d'objets Rectangle

Un objet Rectangle définit une zone rectangulaire. Un objet Rectangle a 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 . Vous pouvez définir ces propriétés pour un nouvel objet Rectangle en appelant 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);

Sous-rubriques

Redimensionnement et repositionnement des objets Rectangle
Recherche d'unions et d'intersections d'objets Rectangle
Autres utilisations des objets Rectangle

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. Ceci 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 indiqué dans le code suivant, si vous modifiez la propriété left ou top d'un objet Rectangle, il est repositionné avec ses propriétésx et y correspondant aux propriétés left et top, respectivement. 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=30, y=20, w=70, h=30)

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. Il est donc 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 nombre de pixels dont les côtés gauche et droit du rectangle vont se déplacer depuis le centre, et le paramètre dy représente le nombre de pixels dont les côtés supérieur et inférieur du rectangle vont se déplacer depuis le centre :

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. Par exemple, dans le code suivant, supposez que l'espace de coordonnées du conteneur d'objet d'affichage contenant l'objet circle est 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. Vous pouvez utiliser la méthode getRect() de la classe DisplayObject pour inclure un espace supplémentaire que les traits d'un objet d'affichage peuvent ajouter à une région de délimitation.

Autres utilisations des objets Rectangle

Les objets Rectangle sont utilisés dans les propriétés et les méthodes suivantes :

Classe

Méthodes ou propriétés

Description

BitmapData

applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), 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.


Flash CS3

 

M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire

Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000187.html