2015-02-03 4 views
0

안녕하세요 여러분, 지금 조금씩 연구 중이므로 알아낼 수 없습니다. 내 introScreen가 나는 introScreen를 제거하고 두 무비 클립 객체가 애니메이션을 포함하기 때문에 startScreen을 추가 할 나는 다른 상태에서 시작을 싶지 않는 그 애니메이션 완료되면currentFrame/totalFrames를 올바르게 사용하는 방법 AS3

는 기본적으로 난 할 노력하고있어입니다 여전히 진행 중이다. 그래서 프레임 속성을 사용하여이 조건을 확인하고 실행하려고합니다.

이것은 지금까지 가지고있는 것이지만, 단지 introScreen을 재생하고 그 화면에 머물러 있습니다.

//Start Game Screen 
     introScreen = new mcIntroScreen(); 
     stage.addChild(introScreen); 
     introScreen.x = (stage.stageWidth/2); 
     introScreen.y = (stage.stageHeight/2); 

     if (introScreen.currentFrame == introScreen.totalFrames) 
     { 
      stage.removeChild(introScreen); 

      //Start Game Screen 
      startScreen = new mcStartGameScreen(); 
      stage.addChild(startScreen); 
      startScreen.x = (stage.stageWidth/2); 
      startScreen.y = (stage.stageHeight/2); 
      trace(startScreen + "startscreenADDED"); 
      startScreen.addEventListener("PLAY_AGAIN", playGameAgain, false, 0, true); 

      startScreen.addEventListener("TIME_ATTACK", timeAttackMode, false, 0, true); 
     } 

나는 현재 코드는 현재 프레임을 통해 재생하고 애니메이션의 총 프레임에 도달하면 다음 조건이 나뿐만 아니라 그것을 추적 시도 만족 될 것이라고 의미 생각 어쩌면 누군가가 날 위해 정리 도움이 될 수 있지만, 아무것도 일어나지 않습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

2

프레임 체크를 Event.ENTER_FRAME 처리기 내에 넣어야합니다.

// Start Game Screen 
introScreen = new mcIntroScreen(); 
// etc 

addEventListener(Event.ENTER_FRAME, introEnterFrameHandler); 

function introEnterFrameHandler(e:Event):void { 
    if (introScreen.currentFrame == introScreen.totalFrames) 
    { 
     removeEventListener(Event.ENTER_FRAME, introEnterFrameHandler); 
     stage.removeChild(introScreen); 
     // etc 
    } 
} 

참고이 의미하는 것 : 그것은 지금 당신이 몇 가지 코드를 왼쪽으로하지 않는 한, 한 번만 바로는 여전히 프레임이 같은 1. 시도 ​​뭔가를 의미 물론 introScreen를 생성 한 후 확인 마지막 프레임은 실제로 볼 수 없습니다. 끝 부분을 처리하기 전에 마지막 프레임을 표시하려면 Event.EXIT_FRAME을 사용할 수 있습니다.

또한 일반적으로하는 방법은 약간 다릅니다. Event.ENTER_FRAME으로 재생을 추적하는 대신 내 타임 라인 끝 부분에 이벤트를 전달합니다. 예 :

// on the last frame of the symbol timeline 
dispatchEvent(new Event("introComplete", true)); 

그때 나는 단순히 사용자 정의 이벤트로 처리 할 수 ​​

// Start Game Screen 
introScreen = new mcIntroScreen(); 
// etc 
addEventListener("introComplete", introCompleteHandler); 
function introCompleteHandler(e:Event):void { 
    stage.removeChild(introScreen); 
    // etc 
} 
+0

와우 물론. 이 Aaron에게 감사 드려서 고맙습니다. 이벤트 처리기에 대한 추가 정보를 제공해 주셔서 감사합니다. 다음 번엔 잊지 못할거야. – Nathan