【问题标题】:Cocos2D Director Pause/Resume IssueCocos2D Director 暂停/恢复问题
【发布时间】:2009-12-17 13:03:52
【问题描述】:

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

【问题讨论】:

  • 你使用的是哪个版本的 Cocos2D?您可以发布代码示例吗?你用什么导演?你用什么来暂停/恢复它?
  • 请记住,pause 实际上并没有暂停 Director。相反,您是在告诉 Director 您的游戏处于暂停状态,而 Director 的响应是仍在运行,但帧速率(低得多)。 resume 告诉导演继续以全目标帧速率运行。

标签: iphone animation cocos2d-iphone adobe-director


【解决方案1】:

如果它是一个简单的覆盖,只需暂停并直接调用 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。分离/连接舞蹈似乎效果不佳或始终如一。

【讨论】:

    【解决方案2】:

    您的某些错误可能是由于附加/分离、显示/隐藏视图造成的。我和我的团队只在applicationDidFinishLoading 上调用一次attachInView,如果我们想在Cocos 之上的其他视图中进行更改,我们使用sendToBackbringToFront 调用代理窗口实例。可能值得一试。让我知道这是否有意义,或者如果没有,我可以输入一些示例代码。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多