这里我再次提出一个cocos2d问题,请帮帮我。 我有一个游戏设置,我有6-7个不同的场景,其中一个场景是使用RootViewController,我正在使用核心图形基金和线条绘图就像(iOS库上提供的GLPaint应用程序)。所以我想要的是用一个场景移动到另一个场景 [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3 scene:[_ _ _ _ _ _ _ _ _]]];
现在我应该在空白区域写什么?我要替换的场景包含RootViewController所以请帮我解决这个问题。
答案 0 :(得分:1)
无论您是想要转换到场景还是从场景转换到RootViewController,我都认为您无法在其上使用Cocos2D转换。我假设您希望在RootViewController的视图上应用淡入淡出转换,但您需要使用UIKit,可能需要使用CoreAnimation来执行此操作。据我所知,Cocos2D只能在精灵,图层等上使用Cocos2D过渡。基本上任何是CCNode基类的后代。 UIKit是一个独立的空间。
这并不是说你不能做你想做的事情,但我相信你需要改变你对这个问题的看法。一种可能的解决方案......
这是非常宽松的伪代码,但是从我将UIKit组件与Cocos2D合并的经历看来,它似乎是一个很好的起点。
编辑:用于为视图控制器和场景设置动画的代码示例
在Cocos2D中为虚拟场景设置动画,我有点生气,但应该是这样的......
CCScene* dummyScene = [CCScene node];
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3 scene:dummyScene]];
现在为视图控制器设置动画....
[UIButton beginAnimations:nil context:NULL];
... do fade in/out, etc with your view controller ...
[UIView commitAnimations];
查看Core Animation Guide,了解您可以执行的所有不同动画/修改的概述。我忘了你是如何逐渐消失的。我认为这可能就像在beginAnimations
和commitAnimations
调用之间更改viewController视图的不透明度一样简单。我会说这是你的第一次尝试。您可能希望从不透明度开始为0,因此它完全不可见,然后转换为1.0,这应该使它完全不透明,至少如果我理解正确的话。您还需要将viewController置于视图堆栈的前端。在UIView API中有多种方法可以做到这一点。