Cocos2D Director暂停/恢复问题

时间:2009-12-17 13:03:52

标签: iphone animation cocos2d-iphone adobe-director

我正在尝试在cocos2D中播放.gif动画。为此,我使用库glgif。现在,要显示动画我暂停导演,添加子视图以显示动画,动画完成后我恢复导演。 但是,我无法恢复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];

3 个答案:

答案 0 :(得分: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。分离/附加舞蹈似乎不能很好地或一致地工作。

答案 1 :(得分:0)

可能有些错误是由于附加/分离,显示/隐藏视图。我和我的团队只在attachInView上调用applicationDidFinishLoading一次,如果我们想在Cocos顶部更改其他视图,我们会在委托窗口实例上使用sendToBackbringToFront调用。可能值得一试。如果有意义,请告诉我,如果不是,我可以在一些示例代码中添加。

答案 2 :(得分:0)

不完全确定它是否可以在这里提供帮助,但值得一提的是:CCDirector暂停方法不会完全停止动画,只会减慢它的速度。 StopAnimation方法完全阻止它。所以也许stopAnimation / startAnimation而不是暂停/恢复可以解决这个问题。