2009-12-17 6 views
5

cocos2D에서 .gif 애니메이션을 재생하려고합니다. 이를 위해 glgif 라이브러리를 사용하고 있습니다. 이제는 애니메이션을 표시하려면 Director를 일시 중지하고 애니메이션을 표시 할 하위보기를 추가하고 애니메이션이 끝난 후 Director를 다시 시작합니다. 그러나 Director의 상태를 재개 할 수없고 공백으로 표시됩니다. 나는이 Director를 일시 중지하고 다시 시작하지 않고이 작업을 시도했지만 여전히 작동하지 않았습니다. 나는 또한 애니메이션을 시작하기 전에 감독을 분리하고 이후에 다시 추가하려고 시도했지만 작동하지 않았습니다.Cocos2D Director 일시 중지/다시 시작 문제

그렇다면 응용 프로그램에서 Director를 일시 중지/일시 중지하고 올바르게 복원하는 방법이 있습니까?

감사합니다.

코드 샘플 :

[[Director sharedDirector] pause]; 
[[Director sharedDirector] detach]; 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[del.window addSubview:del.viewController.view]; 
[del.window makeKeyAndVisible]; // this is code to call glgif class and start anim. 
//code to resume the director 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[[Director sharedDirector] resume]; 
[[Director sharedDirector] attachInView:del.window]; 
MScene *m = [MScene node]; 
[[Director sharedDirector] replaceScene:m]; 
+0

어떤 버전의 Cocos2D를 사용하고 있습니까? 코드 샘플을 게시 할 수 있습니까? 어떤 감독을 사용합니까? 그것을 일시 중지/다시 시작하는 데 당신은 무엇을 사용합니까? – nash

+2

'일시 중지'는 실제로 감독을 일시 중지하지 않습니다. 대신 감독이 게임이 일시 중지 된 상태라고 말하면서 감독은 아직 실행 중이지만 더 낮은 프레임 속도로 응답합니다. 'resume'은 Director에게 full target framerate에서 실행을 재개하도록 지시합니다. –

답변

0

그것의 가능한 당신의 몇 가지 오류가보기를 표시/숨기기, 분리/연결의 결과로. 나와 내 팀은 attachInView 번을 applicationDidFinishLoading에 한 번만 호출하고 다른보기에서는 코코스 위로 변경하려면 sendToBack 또는 bringToFront 대리인 창 인스턴스에 대한 호출을 사용합니다. 총에 맞을만한 가치가 있을지도 모릅니다. 그게 합리적인지 아니면 일부 샘플 코드를 던질 수 없는지 알려주십시오.

2

간단한 오버레이 인 경우 일시 중지하고 UIKit 호출을 직접 수행하십시오. 이처럼 :

- (void)playerChanged 
{ 
    [[CCDirector sharedDirector] pause]; 
    UIAlertView *alert = [[[UIAlertView alloc] 
     initWithTitle:NSLocalizedString(@"CHANGEPLAYER", nil) 
     message:nil 
     delegate:self 
     cancelButtonTitle:nil 
     otherButtonTitles:NSLocalizedString(@"OK", nil), 
     nil 
    ] autorelease]; 
    [alert show]; 
} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    (void)alertView; 
    (void)buttonIndex; 

    [[CCDirector sharedDirector] resume]; 
} 

당신이 정말로 전체 창을 인수하는 경우, 다음 완전히의

[[CCDirector sharedDirector] end]; 

을 폐기하고 사용하는 초기화를 다시 실행하고 다시 갈 때 runWithScene를 호출합니다. 탈착/부착 댄스는 잘 작동하거나 일관되게 작동하지 않습니다.

0

여기서 도움이 될지 확실하지 않지만 언급 할 가치가 있습니다. CCDirector 일시 중지 방법으로 애니메이션이 완전히 멈추지 않고 느려집니다. StopAnimation 메서드가 완전히 중지합니다. 어쩌면 stopAnimation/startAnimation 대신 일시 중지/다시 시작하면이 문제를 해결할 수 있습니다.