如何用RootViewController替换场景?

时间:2011-03-31 10:37:09

标签: cocos2d-iphone

这里我再次提出一个cocos2d问题,请帮帮我。 我有一个游戏设置,我有6-7个不同的场景,其中一个场景是使用RootViewController,我正在使用核心图形基金和线条绘图就像(iOS库上提供的GLPaint应用程序)。所以我想要的是用一个场景移动到另一个场景 [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3 scene:[_ _ _ _ _ _ _ _ _]]];

现在我应该在空白区域写什么?我要替换的场景包含RootViewController所以请帮我解决这个问题。

1 个答案:

答案 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,了解您可以执行的所有不同动画/修改的概述。我忘了你是如何逐渐消失的。我认为这可能就像在beginAnimationscommitAnimations调用之间更改viewController视图的不透明度一样简单。我会说这是你的第一次尝试。您可能希望从不透明度开始为0,因此它完全不可见,然后转换为1.0,这应该使它完全不透明,至少如果我理解正确的话。您还需要将viewController置于视图堆栈的前端。在UIView API中有多种方法可以做到这一点。