CCRepeatForever 不会在睡眠后立即恢复

Posted

技术标签:

【中文标题】CCRepeatForever 不会在睡眠后立即恢复【英文标题】:CCRepeatForever not resuming immediately after sleep 【发布时间】:2013-05-26 00:17:52 【问题描述】:

在一个由 cocos2D 驱动的 iphone 应用程序中,我使用 CCRepeatForever 动作使背景通过。当我调试应用程序(通过 XCode 构建和运行)时,它工作正常。即使我退出应用程序并恢复它,也没问题。 但是,当我将应用程序捆绑到 .ipa 中进行 beta 测试时,我遇到了一个奇怪的问题: 在启动时,背景很好地过去了。 但是,如果我退出应用程序并稍后恢复游戏,应用程序会将我带回到我离开它的地方,除了移动的背景之外一切正常。一段时间后(与我退出应用程序后的时间大致成正比),背景会重新开始移动,而无需我做任何特别的事情。 这是一个已知问题吗? 谢谢

【问题讨论】:

【参考方案1】:

哦,我不久前遇到了一个非常相似的问题。我会暂停游戏,然后在恢复时什么都不会发生,然后它会突然跳起来,我会被怪物包围。

我无法准确告诉你去哪里看,但这是我正在做的事情:

我有一个计时器,它没有使用 (ccTime)dt 来计算时间,而是使用 NSDate 时间戳。问题是我有一个事件要根据日期安排在某个时间,但我使用 dt 来确定何时触发事件。

据我所知,暂停游戏就是暂停预定的事件,所以“dt”根本没有增加,但系统时钟一直在滴答作响,所以最终发生的事情是我会暂停说10 秒,系统时钟滴答作响并触发,但“dt”正在添加到浮点 timeElapsed,直到赶上,什么都没有发生。

您可能需要查找的是使用 NSDate 或 unix 时间戳或 iPad/iPod 系统时钟的预定事件中的某些内容。当您停止模拟器时,系统时钟的运行方式似乎与实际 iPad 上不同。

抱歉,我不知道这东西到底是如何工作的,但我也经历了一段痛苦的时间,遇到了类似的问题,它是基于系统计时器的。只需确保您使用 CCDirector 正确暂停所有内容,并确保您没有使用任何系统时钟来进行游戏计时

【讨论】:

以上是关于CCRepeatForever 不会在睡眠后立即恢复的主要内容,如果未能解决你的问题,请参考以下文章

调用睡眠的程序不会在信号上唤醒

在 react-native 的应用程序中处于睡眠模式或不活动状态后,模态不会打开

Cortex M0 不进入睡眠模式

睡眠后可可 NSTimer

UIImageView 立即更改图像

自实现睡眠函数