2014-07-25 3 views
0
-(void) gameplay 
{ 
    if (actionhappen){ 
     CCActionSequence *mySeq = [CCActionSequence actionWithArray:@[do,some,action]]; 
     [mySprite runAction:mySeq]; // it takes 3 seconds. 
    } 
    [self checkWinner]; 
} 


-(void)checkWinner{ 
if (someoneWin){ 
    // I want to wait here until mySeq action finished 
     [self showWinnerMessage]; 
    } 
} 

대기 방법을 실행 CCActionSequence이 코드에서

[자기 showWinnerMessage]를 마칠 때까지 실행됩니다.

mySprite 동작이 완료 될 때까지 어떻게 기다릴 수 있습니까?

수면()이 모든 것을 잠자 게 만드는 것 같습니다.

+1

runblock/performselector 행동이있다, – LearnCocos2D

+0

덕분에 내가 할 수있는 LearnCocos2D 순서의 마지막에 1 점을 추가하는 듯를 runblock/performselector를 사용하면 runAction이 항상 발생하지는 않습니다. 기사를 업데이트했습니다. – whitebear

답변

1

음, LearnCocos2D 이미 의견에서이 질문에 대답, 그러나 여기이 할 수있는 코드입니다 @ :

-(void) gameplay 
{ 
    if (actionhappen) 
    { 
     CCActionCallFunc *checkWinner = 
      [CCActionCallFunc actionWithTarget:self selector:@selector(checkWinner)]; 

     CCActionSequence *mySeq = 
      [CCActionSequence actionWithArray:@[do,some,action, checkWinner]]; //note checkWinner 

     [mySprite runAction:mySeq]; // it takes 3 seconds. 
    } 
    else 
    { 
     // in this case call the func directly 
     [self checkWinner]; 
    } 
} 

-(void)checkWinner 
{ 
    if (someoneWin) 
    { 
     // I want to wait here until mySeq action finished 
     [self showWinnerMessage]; 
    } 
} 
+0

당신의 설명은 초급자에게 아주 유용하고 유용합니다. 그러나 '내 CCActionSequencs는 항상 발효되지 않습니다.'라는 한 가지 조건이 있습니다. 기사의 코드가 변경되었습니다. – whitebear

+0

코드를 쉽게 업데이트 할 수 있습니다. 난 대답을 업데이 트했지만 당신이 직접 알아 냈어 야지. 시퀀스가 끝날 때까지 기다리지 않고'checkWinner'를 호출하는 코드가 있습니다. 시퀀스가 끝날 때까지 기다리는 코드를 붙여 넣었습니다. 당신은 단지'actionhappen' 플래그와 voila에 따라 하나를 사용해야합니다 :) –

+0

고마워요. 당신은 내 문제를 간단하게 만듭니다. 매우 감사합니다 – whitebear