객체 크기 조작 및 크기 조절

Flash Player 9 이상, Adobe AIR 1.0 이상

크기 속성(widthheight) 또는 크기 조절 속성(scaleXscaleY)을 사용하여 표시 객체의 크기를 두 가지 방식으로 측정하고 조작할 수 있습니다.

모든 표시 객체에는 width 속성과 height 속성이 있습니다. 이러한 속성은 처음에는 객체의 크기(픽셀)로 설정됩니다. 이러한 속성의 값을 읽어서 표시 객체의 크기를 측정할 수 있습니다. 다음과 같이 새 값을 지정하여 객체의 크기를 변경할 수도 있습니다.

// Resize a display object. 
square.width = 420; 
square.height = 420; 
 
// Determine the radius of a circle display object. 
var radius:Number = circle.width / 2;

표시 객체의 height 또는 width를 변경하면 객체의 크기가 조절됩니다. 즉, 객체의 내용이 새 영역에 맞게 확대되거나 축소됩니다. 표시 객체에 벡터 모양만 포함되어 있는 경우 품질 손상 없이 해당 모양이 새 크기로 다시 그려집니다. 표시 객체에 있는 비트맵 그래픽 요소는 다시 그려지지 않고 크기가 조절됩니다. 예를 들어, 폭과 높이가 이미지의 실제 픽셀 정보 크기보다 크게 확대되는 디지털 사진은 픽셀화되어 들쭉날쭉하게 보입니다.

표시 객체의 width 또는 height 속성을 변경하면 Flash Player 및 AIR에서 객체의 scaleXscaleY 속성도 함께 업데이트합니다.

참고: TextField 객체에는 이러한 크기 조절 비헤이비어가 적용되지 않습니다. 텍스트 필드는 텍스트 줄 바꿈과 글꼴 크기에 맞게 자체적으로 크기 조절되어야 하므로 크기 조절 후 scaleX 또는 scaleY 값이 1로 재설정됩니다. 그러나 TextField 객체의 scaleX 또는 scaleY 값을 조정할 경우 width 및 height 값은 사용자가 지정한 크기 조절 값에 맞게 변경됩니다.

이러한 속성은 원본 크기와 비교한 표시 객체의 상대적인 크기를 나타냅니다. scaleXscaleY 속성은 분수(소수) 값을 사용하여 백분율을 나타냅니다. 예를 들어, 표시 객체의 width 속성이 원본 폭의 1/2 크기로 변경된 경우 객체의 scaleX 속성 값은 .5(50%)가 됩니다. 높이가 두 배로 커지면 scaleY 속성 값이 2(200%)가 됩니다.

// circle is a display object whose width and height are 150 pixels. 
// At original size, scaleX and scaleY are 1 (100%). 
trace(circle.scaleX); // output: 1 
trace(circle.scaleY); // output: 1 
 
// When you change the width and height properties,  
// Flash Player changes the scaleX and scaleY properties accordingly. 
circle.width = 100; 
circle.height = 75; 
trace(circle.scaleX); // output: 0.6622516556291391 
trace(circle.scaleY); // output: 0.4966887417218543

크기는 비례적으로 변경되지 않습니다. 즉, 정사각형의 height 속성만 변경하고 width 속성은 변경하지 않을 경우 가로와 세로의 비율이 달라져서 정사각형이 아니라 직사각형이 됩니다. 표시 객체의 크기를 상대적으로 변경하려면 width 또는 height 속성 대신 scaleXscaleY 속성 값을 설정하여 객체의 크기를 조절할 수 있습니다. 예를 들어, 다음 코드는 square라는 표시 객체의 width 속성을 변경한 다음 세로 비율(scaleY)을 가로 비율과 일치하도록 변경하여 정사각형의 가로 세로 비율을 유지합니다.

// Change the width directly. 
square.width = 150; 
 
// Change the vertical scale to match the horizontal scale,  
// to keep the size proportional. 
square.scaleY = square.scaleX;