_root.onLoad = function() {} 이벤트핸들러 메쏘드가가 이떄까지..

onClipEvent(load) 가 _root에만 먹히는 줄 알고 있었다.

신명용 책에 그런 내용이 있다.

일반적인 무비클립에는 적용이 안 되는 것이 버그고..

어제 무수히 실험한 결과

_root.onLoad = function() {} 에서의 onLoad 이벤트는

onClipEvent(load)의 로드 이벤트핸들러가 아니라.

LoadVars나 XML 등의 onLoad 이벤트 핸들러 메쏘드랑 똑같은 역활을 한다..ㅡ.ㅡ

_root.onLoad = function() {}가 호출되는 시점은 정확하게

_root 가 다 로딩 되었을 때다.

_root.onLoad = function () {

a=0

}

trace(a)

하면 이쁘게 undefined 가 된다.

프레임에

_root.onLoad = function () {

trace("루트 로드 이벤트")

}

한개의 mc0를 만든 후

그 mc0에다가 onClipEvent(load) {

trace("무비클립0 로드 이벤트")

}

라고 쓰고 그 안에다 mc1을 만든 후에

그 mc1에다가 onClipEvent(load) {

trace("무비클립1 로드 이벤트")

}

이렇게 써보면

결과는

무비클립0 로드이벤트

무비클립1 로드이벤트

루트 로드 이벤트

이런 결과가 뜬다.

추측건데..

플래시가 onLoad 이벤트에 대해서 구분을 못하는 거 같다.

이게 무비클립객체에 대한 onLoad 이벤트핸들러인지 아님 외부 데이터 파일을 다 가져왔을 때에대한 onLoad 이벤트 핸들러인지..

_root.mc0.onLoad = functon () {

}

위의 이벤트 핸들러가 작동이 안 되는 것은

_root.mc0가 무비클립인지 외부 데이터 파일을 가져오는 객체인지 헷갈리는 것이다

시점의 문제가 아니고

mc0의 무비클립을 클릭한 후

" // "

이렇게 주석을 달아보자

그럼 플래시는 mc0를 무비클립이라고 인식해서

정확하게 onClipEvent(load)와 같이 작동한다.

왜냐면 무비클립에만 저런 주석을 남길 수 잇기 때문에 ..

달고 나면 그 때부터는 무비클립으로 인식하여 제대로 저 이벤트 핸들러가 먹히게 되는 것

그리고 참고로

movieClip.onLoad = function () {}

이벤트는

특정 클래스와 연관된 라이브러리에 심볼이 지정된 무비 클립에만 사용할 수 있기 때문에

dynamic_mc.onLoad = function () {

trace(랄~~~라")

}

dynamic_mc.loadMovie("replacement.swf");

위와 같은 코드는 실행되지 않느다.

Posted by 퓨전마법사
,