cocos2d 动画从后台返回时停止

Posted

技术标签:

【中文标题】cocos2d 动画从后台返回时停止【英文标题】:cocos2d animation stops when returning from background 【发布时间】:2014-02-23 15:19:04 【问题描述】:

我在 iPhone 的 cocos2d 3.0 项目中遇到问题,基本上动画在应用程序发送到后台时停止,并且在重新启动应用程序时不再启动。

整个 Xcode 项目完全是从我的另一个没有出现此错误的项目中复制的,我所做的唯一主要事情是集成了一些广告网络(Chartboost 和 PlayHaven) - 但我已经注释掉了所有广告代码来测试这是否是原因并且没有效果。

工作(旧)项目以 60 FPS 运行(通过状态为 cocos2d: animation started with frame interval: 60.00 的控制台条目观察)并在发送到后台时降至 4 FPS(标准 cocos2d 行为),然后在启动时以 60 FPS 重新启动再次。我在以 4 FPS 重新启动时遇到问题的项目,但即使这样也是错误的 - 根本没有动画。

我尝试在applicationDidBecomeActive:中添加以下代码

[[CCDirector sharedDirector] setAnimationInterval:1.0/60];
[[CCDirector sharedDirector] startAnimation];

这使得重新启动时控制台日志说 60 FPS 而不是 4,但它仍然对动画没有实际影响 - 它仍然只是停止。

【问题讨论】:

【参考方案1】:

问题似乎是我的应用委托中存在 applicationDidBecomeActive 方法 - 包含任何内容的该方法将阻止 cocos2d 正确重新启动动画。

解决方案是 - 在您的方法中 - 添加对超类的调用,如下所示:[super applicationDidBecomeActive:application];

我在这个方法中有 Chartboost 代码,这就是为什么它出现在这个项目中,而不是我的旧(工作)代码 - 当我测试广告集成是否是原因时,我只是注释掉了 Chartboost 代码而不是整个方法。

【讨论】:

以上是关于cocos2d 动画从后台返回时停止的主要内容,如果未能解决你的问题,请参考以下文章

从时间轴播放 Spritebuilder 动画 - Cocos2d

Cocos2D 动画问题

UITableViewController 滚动引起的cocos2d动画暂停问题的解决

Sprite 帧动画 Cocos2d 3.0

Cocos2D iPhone 后台运行后应用程序不响应触摸

如何在 cocos2d 中一个接一个地排列精灵的动画?