Rectangle 객체 사용

Rectangle 객체는 사각형 영역을 정의합니다. 이 객체에는 왼쪽 위 모서리의 xy 좌표로 정의된 위치, width 속성, height 속성 등이 있습니다. 다음과 같이 Rectangle() 생성자 함수를 호출하여 새 Rectangle 객체에 대해 이러한 속성을 정의할 수 있습니다.

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

세부 목차

Rectangle 객체의 크기 및 위치 조정
Rectangle 객체의 통합 및 교차 영역 얻기
Rectangle 객체의 다른 사용 방법

Rectangle 객체의 크기 및 위치 조정

다양한 방법을 사용하여 Rectangle 객체의 크기와 위치를 조정할 수 있습니다.

xy 속성을 변경하면 Rectangle 객체의 위치를 직접 조정할 수 있습니다. 이때 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)

다음 코드와 같이 Rectangle 객체의 left 또는 top 속성을 변경하면 객체의 위치가 조정되고 각각 lefttop 속성과 일치하는 xy 속성이 변경됩니다. 그러나 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.left = 20; 
rect1.top = 30;
trace(rect1); // (x=30, y=20, w=70, h=30)

또한 다음 예제와 같이 Rectangle 객체의 bottom 또는 right 속성을 변경하면 왼쪽 위 모서리 위치는 변경되지 않고 크기만 적절하게 조정됩니다.

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)

다음과 같이 offset() 메서드를 사용하여 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.offset(20, 30); 
trace(rect1); // (x=20, y=30, w=100, h=50)

offsetPt() 메서드도 비슷한 방식으로 작동하지만 xy 오프셋 값 대신 Point 객체를 매개 변수로 사용한다는 차이가 있습니다.

dxdy라는 두 개의 매개 변수를 포함하는 inflate() 메서드를 사용하여 Rectangle 객체의 크기를 조정할 수도 있습니다. dx 매개 변수는 사각형의 왼쪽 및 오른쪽 변이 중심에서 이동하는 픽셀 크기를 나타내고, dy 매개 변수는 사각형의 위쪽 및 아래쪽 변이 중심에서 이동하는 픽셀 크기를 나타냅니다.

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)

inflatePt() 메서드도 비슷한 방식으로 작동하지만 dxdy 값 대신 Point 객체를 매개 변수로 사용한다는 차이가 있습니다.

Rectangle 객체의 통합 및 교차 영역 얻기

union() 메서드를 사용하면 두 사각형의 경계선에 의해 형성되는 사각형 영역을 얻을 수 있습니다.

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)

intersection() 메서드를 사용하면 두 사각형의 서로 겹치는 영역에 의해 형성되는 사각형 영역을 얻을 수 있습니다.

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)

두 사각형이 교차하는지 여부를 확인하려면 intersects() 메서드를 사용합니다. 또한 표시 객체가 Stage의 특정 영역 내에 있는지 여부를 확인하는 경우에도 intersects() 메서드를 사용할 수 있습니다. 예를 들어, 다음 코드에서는 circle 객체를 포함하는 표시 객체 컨테이너의 좌표 공간이 Stage의 좌표 공간과 같다고 가정합니다. 이 예제에서는 intersects() 메서드를 사용하여 표시 객체 circletarget1target2라는 Rectangle 객체로 정의된 스테이지 특정 영역과 교차하는지 여부를 확인하는 방법을 보여 줍니다.

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

마찬가지로 두 표시 객체의 경계 사각형이 교차하는지 여부를 확인하는 경우에도 intersects() 메서드를 사용할 수 있습니다. DisplayObject 클래스의 getRect() 메서드를 사용하면 표시 객체의 획으로 인해 경계 영역에 추가되는 공간을 포함할 수 있습니다.

Rectangle 객체의 다른 사용 방법

다음과 같은 메서드 및 속성과 함께 Rectangle 객체를 사용할 수 있습니다.

클래스

메서드 또는 속성

설명

BitmapData

applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), fillRect(), generateFilterRect(), getColorBoundsRect(), getPixels(), merge(), paletteMap(), pixelDissolve(), setPixels(), threshold()

BitmapData 객체의 영역을 정의하기 위해 일부 매개 변수의 유형으로 사용됩니다.

DisplayObject

getBounds(), getRect(), scrollRect, scale9Grid

속성의 데이터 유형 또는 반환되는 데이터 유형으로 사용됩니다.

PrintJob

addPage()

printArea 매개 변수를 정의하는 데 사용됩니다.

Sprite

startDrag()

bounds 매개 변수를 정의하는 데 사용됩니다.

TextField

getCharBoundaries()

반환값 유형으로 사용됩니다.

Transform

pixelBounds

데이터 유형으로 사용됩니다.


Flash CS3

 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/main/00000187.html