2010-06-15 2 views
2

MovieClip에 init() 함수를 추가하려고하는데 scene1에서 함수를 실행할 때 MovieClip에 설정된 변수가 아직 정의되지 않았습니다 ... MovieClip이 라이브러리의 스테이지로 드래그되었습니다.변수가 정의되기 전에 AS3 기능이 실행 중입니다!

장면 l :

mc.init(null); 

영화 클립 :

var _default = 5; 

function init(num) { 
    if(num == null) { 
      trace(_default); 
    } else { 
      trace(num); 
    } 
} 

이 대신 "5"의 "정의"추적되고; 이 문제를 해결할 방법이 있습니까?

답변

1

문제는 메인 타임 라인에 직접 배치 된 코드는 항상 MovieClip에 직접있는 코드보다 먼저 실행된다는 것입니다.

이 문제를 해결하려면 먼저 타임 라인과 MovieClip에서 해당 코드를 실행하여 플래시를 완료 한 다음 완료 후 타임 라인에서 함수를 호출해야합니다.

이벤트 리스너를 사용하는 것이 가장 쉬운 방법 :

타임 라인 :

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void { 
    myObject.init(null); 
    removeEventListener(Event.ENTER_FRAME, onEnterFrame); 
} 

첫 번째 프레임의 초기화 함수를 호출하기 시작했다 때까지 타임 라인에서 대기하는 방법

당신의 MovieClip.

관련 문제