위처럼 객체가 있을때 저 객체의 영역을 구하고 싶다면

단순히 mc.width 와 mc.height 가 될것입니다.

그렇다면 아래와 같은 상황은 어떨까요?



분명 width와 height 는 같은데 좌표가 다르기 때문에

상황이 조금 다릅니다.

이같은 상황은 Display List 상에서 객체의 위치나 영역을 참조할때,

BitmapData.draw(), Matrix 등을 다룰때 문제를 발생시킵니다.

아마 액션스크립트를 조금 해보신 분이라면

mc.x + mc.width 와 mc.y + mc.height 라고 생각하실지도 모릅니다.

하지만 아쉽게도 좌표는 0, 0 이기 때문에

정답이 아닙니다.

그렇다면 안에 있는 객체를 가져다가 좌표를 계산해주면 어떨까요?

맞는 답입니다.

하지만 스스로 구현하려고 할 필요가 없습니다.

DisplayObject.getBound( null ): Rectangle 메소드가 알아서 해주기 때문이죠.

리턴값이 Rectangle 이기 때문에 알아서 좌표와 영역을 뱉어주죠.

저게 우리가 플래시에서 우클릭해서 "다시 그리기 영역"을 볼때 나오는

영역일것이라 추정됩니다.

var bound: Rectangle = this.mc.getBounds( null );

trace( bound );     // (x=53.5, y=79.5, w=126, h=107)

이렇게 해서 BitmapData 를 그릴때는 bound.x + bound.width 로 해주면

모든 영역을 감싸는 BitmapData 를 만들 수 있습니다.


+ Recent posts