Flash CS3 가 출시되고 AS3.0 이 널리 퍼지고 있는 요즘

Document Class 에 대한 문의가 많은것 같습니다.

처음 배우는 분들도 기본적인 개념만 익혀서 사용하는데 전혀 문제 없기 때문에

디테일하게 다루다 보면 생각의 장벽에 부딪히는 경우가 많더군요.

Document Class (이하 DC)는 한줄로 표현하자면 "fla 의 하얀 바탕 그 자체가 Document Class다." 이라고 할 수 있습니다.

물론 이정도만 알고 있어도 사용하는데 큰 불편함은 없지만

Application Domain 을 사용한다던지

Loader 를 이용해서 외부 클래스를 사용한다던지

Stage 에 대한 디테일한 컨트롤을 할때는 어김없이 DC에 대한 개념이 발목을 잡을때가 많습니다.

DC 에 대한 가장 정확한 표현은

"Stage 에 가장 먼저 자동으로 addChild 되는 DisplayObject 다."

라고 할 수 있습니다.

자 하나씩 구체적으로 살펴보도록 합시다.

우리가 사각형을 만들때 보통


이렇게 하죠?

자 그러면 네이밍을 좀 바꿔서



이런식으로 구조를 잡았다고 가정해보면

대충 소스에서 눈치챌 수 있듯이

root 를 가장 최상위 컨테이너로 사용해서 구조를 잡은게 되겠죠.



이와 마찬가지로

DC 는 저 root 처럼

기본적으로 가장 맨처음 생성되는 Sprite 일 뿐입니다.

다만 Document Class 라는 거창한 이름이 붙은 이유는

swf 가 구동이 되면 자동적으로 DC 가 생성되서 Stage 에 addChild 되어 가장 먼저 눈에 보이는 클래스이기 때문입니다.

addChild 가 된다는 이야기는 removeChild 도 된다는 이야기입니다.

아래와 같이 한번 테스트해보세요.

fla 바탕에 신나게 이거저거 만들어 놓은 후에



fla 바탕에 신나게 장난쳐놓은게 싹 사라진것을 볼 수 있을겁니다.

DC 라는것은 그저 Stage 에 가장 첫번째로 자동으로 addChild 되는 Sprite 일 뿐입니다.

때문에 그다지 어렵고 위대한 존재도 아니며

건드리기 힘들고 무조건 최상위에 있는 그런 특권을 가진 클래스도 아닙니다.

맘에 안들면 새로운 클래스 만들어서

var newDC:Sprite = new Sprite();
this.stage.addChild(newDC);
this.stage.removeChild(this);

라는 소스로 DC 를 바꿔치기 할 수도 있다는 얘기죠.

이부분을 잘 응용하면 이런 구조를 만들 수 있습니다.

Flash 입장에서 Flex 의 부러운 점 중에 하나가

Alert 뜰때 배경이 뿌옇게 되는 기능이 꽤나 매력적으로 보였었죠.

그러나 막상 구현하자니 바탕에 있는거 통채로 bitmap 으로 카피떠서

blur 주자니 보통일이 아니고

하나하나 blur 주자니 액션이니 뭐니 이런거 죄다 다시 removeEventListener 해줘야되서 물리적으로 불가능하고...

이럴때 DC 의 특성을 잘 이용하면 이쁘게 구현할 수 있습니다.

1. var alert:Sprite = new Sprite(); //알럿 클래스를 만듭니다.
2. this.stage.addChild(alert); //알럿을 스테이지에 추가합니다.
3. this.filters = [new BlurFilter()]; //DC 에 필터를 먹여줍니다.
4. this.mouseEnabled = false; // DC 의 마우스 이벤트를 무력화시켜줍니다.
5. this.mouseChildren = false // DC 의 child 들을 무력화시켜줍니다.


이렇게 하면 Flex 의 이쁜 알럿기능을 플래시에서도 할 수 있습니다.

이처럼 DC 의 성질을 알고나면 DC 도 별거 아니라는 걸 알 수 있습니다.

슬럼덩크의 명대사 "왼손은 거들뿐."

훗... DocumentClass는 Stage를 거들뿐... 후후후... (이건 아닌가 -_-a)

+ Recent posts