2013-03-10 3 views
0

저는 학교 프로젝트로 Flash에서 작은 게임을 만들고 있는데, 무비 클립을 배치 할 때 onLoad 함수 나 ENTER_FRAME 이벤트가 무엇이 먼저 트리거되는지 궁금합니다.먼저 MovieClip.onLoad() 또는 Event.ENTER_FRAME이 발생합니다.

도움을 주시면 감사하겠습니다.

편집 : 객체를 무대에 올려 놓았을 때 실제로 호출되지 않기 때문에 onLoad를 제거했습니다.

var loaded:Boolean = false; 
var angle:Number = 0; //in radians 
this.addEventListener(Event.ENTER_FRAME, update); 
function init():void { 
    //get projectile position based on relation to mouse and spawning point. 
    trace("init"); 
    loaded = true; 
    this.angle = Math.atan2(mouseY - this.y, mouseX - this.x); 
} 
function update(e:Event):void { 
    /* TRIG TIME! Move the object a certain amount 
    * of pixels-- based on the delta, in the specified angle. 
    */ 
    if (!loaded) { 
     init(); 
    } 
    trace("update"); 
    var slope:Number = Math.tan(angle); 
} 

이 방법은 아마 아직도하지만, 작동하지 않습니다 ...

+0

은 어쩌면 당신은 그 두 가지를 사용하고 각 하나에 트레이스() 함수를 추가 할 수 있습니다, trace ("OnLoad here") & trace ("Enter frame")과 같이 출력에 처음 표시되는 내용을 확인하십시오. 그냥 추측입니다 – Radicate

+0

감사합니다! – Codr

+0

나는 결과를 알고 싶다. :) – Radicate

답변

0

에 onLoad 나는 내가에 onLoad 기능을 변경하여이 해결이 case-- 년에 예상대로 작동하지 않는 것 ADDED_TO_STAGE 이벤트에 추가합니다. 클래스의 모든 ActionScript 스크립트 코드를 플래시 파일 밖으로 이동하고 별도의 actionscript 파일로 이동하여 event.ENTER_FRAMEevent.ADDED_TO_STAGE 이벤트에 대한 이벤트 리스너를 클래스의 생성자에 넣으면 이제 전체 클래스가 매력처럼 작동합니다.

public function Projectile() { 
    this.addEventListener(Event.ADDED_TO_STAGE, init); 
    this.addEventListener(Event.ENTER_FRAME, update); 
    super(); 
} 

함수 init이 함수 업데이트 전에 호출되었으므로 이제는 계속 작업 할 수 있습니다! 날이 딜레마를 해결 돕는 Don

특별 감사

사용에 onLoad, 그래서 대신 MovieClip.onLoad와()를 리스너를 추가하고, 안 액션 스크립트 3에서
0

는 수행

MovieClip.addEventListener(Event.ADDED,mcLoaded); 

function mcLoaded(e:Event):void { 

trace("MovieClip added."); 

} 

질문에 대해서는 ADDED/ADDED_TO_STAGE이 (가) ENTER_FRAME보다 먼저 실행됩니다.

이 솔루션은 타임 라인 코드입니다 (아니 별도의 .as 파일. 영업 이익은 다른 경우에 대한 솔루션을 제공합니다.)