_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");
위와 같은 코드는 실행되지 않느다.
'JavaScript' 카테고리의 다른 글
2차 완성된 DHTML 을 이용한 클라이언트 스크립트로 Element 생성 (0) | 2007.03.31 |
---|---|
자바스크립트로 클래스 만들기 (0) | 2007.03.31 |
젠장 자바스크립트 아직도 배울것이 남았다니..ㅠ.ㅠ (0) | 2007.03.28 |
TR 추가하는 자바스크립트 (0) | 2007.03.23 |
자바스크립트 #1 객체지향 흉내내기 (0) | 2007.03.19 |