可能在CCTransition期间更换CCScene吗?

时间:2013-09-01 14:16:27

标签: iphone background cocos2d-iphone kobold2d ccscene

replaceScene: CCSceneCCDirector拨打CCTransition dealloc会导致 SceneOne *destScene = [SceneOne node]; CCTransitionFade *transition = [[CCTransitionFade alloc]initWithDuration:2 scene:destScene]; [[CCDirector sharedDirector]replaceScene:transition]; double delayInSeconds = 1.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ [[CCDirector sharedDirector]replaceScene:[SceneTwo node]]; }); 未在所使用的任何场景中调用CCTransition,此后,操作任何场景都没有显示。

这是a link to the sample project

获得此行为的最短方法是这种方法(我的意思是重现问题):

CCDirector

我的问题是:CCDirector正在执行CCTransition时有没有可行的方法来替换场景?

我已经实现了一个来自applicationDidEnterBackground的委托回调,告诉我有关结束场景替换的事情,但是如果我在applicationWillEnterForeground期间按下iPhone主页按钮,则永远不会调用它。

如果答案是否定的,是否有cocos2d-iphone方式实现下述目标?

最初,当我想在CCTransition(作为后台任务)或replaceScene时添加“加载场景”时出现了这个问题,但我意识到它与后台执行无关。我的最终目标是在游戏等待Game Center身份验证处理程序被调用时提供无缝的用户体验,并且从应用程序从一开始就显示的“加载场景”就足够了(不仅阻止用户交互,可以通过多种方式完成,但不向用户显示以前的游戏UI)。但是,这个解决方案很容易受到上述问题的影响 - 如果用户在场景转换期间点击主页按钮,他将从后台开始游戏后获得一个非常奇怪的屏幕。

编辑:经过一些研究后,我没有找到任何令人满意的解决方案来替换CCLayer期间的场景,但是,上述问题是通过不调用CCScene而是通过添加“loading”来解决的。 {1}}与可见CCTransition一样,@ LearnCocos2D(感谢Steffen)建议。这并不完美,因为在发生奇怪的结果时,在场景转换期间添加一个孩子仍然有一些狭窄的窗口(在运行时间意义上),但它比替换场景要好得多。我想提一下,它只关注我在3GS上测试我的游戏,因为新设备明显更快,并且很难在{{1}}期间以比3GS更快的速度重现“主页按钮”点击的问题。

0 个答案:

没有答案