Cocos2d iphone 如何用RootViewController替换场景?

Cocos2d iphone 如何用RootViewController替换场景?,cocos2d-iphone,Cocos2d Iphone,我又问了一个cocos2d问题,请帮我解决。 我有一个游戏设置,我有6-7个不同的场景,其中一个场景是RootViewController,我在其中使用核心图形fundas并像(GLPaint应用程序-在iOS库上提供)一样绘制线条。所以我想要的是使用 [[CCDirector sharedDirector]替换场景:[CCTransitionFade transitionWithDuration:3场景:[[uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

我又问了一个cocos2d问题,请帮我解决。 我有一个游戏设置,我有6-7个不同的场景,其中一个场景是RootViewController,我在其中使用核心图形fundas并像(GLPaint应用程序-在iOS库上提供)一样绘制线条。所以我想要的是使用 [[CCDirector sharedDirector]替换场景:[CCTransitionFade transitionWithDuration:3场景:[[uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


现在,我应该在空白处写些什么呢?我要替换的场景包含RootViewController,请帮我解决这个问题。

无论您想转换到还是从属于RootViewController的场景转换,我认为您都无法在其上使用CoCoCoS2D转换。我假设您希望在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];

查看,以了解可以执行的所有不同动画/修改的概述。我忘了你是怎么做的,它会慢慢消失。我认为这可能很简单,只要在
beginAnimations
commitAnimations
调用之间更改viewController视图的不透明度即可。我想说,作为你的第一次尝试,试一下。你们可能会想从不透明度为0开始,所以它是完全不可见的,然后过渡到1.0,至少在我理解正确的情况下,它应该是完全不透明的。您还需要将viewController放到视图堆栈的前面。在API中有多种方法可以实现这一点。

无论您是要转换到场景还是从场景(即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];

查看,以了解可以执行的所有不同动画/修改的概述。我忘了你是怎么做的,它会慢慢消失。我认为这可能很简单,只要在
beginAnimations
commitAnimations
调用之间更改viewController视图的不透明度即可。我想说,作为你的第一次尝试,试一下。你们可能会想从不透明度为0开始,所以它是完全不可见的,然后过渡到1.0,至少在我理解正确的情况下,它应该是完全不透明的。您还需要将viewController放到视图堆栈的前面。API中有多种方法可以实现这一点。

Rob谢谢,但我想要的是我的游戏中有两个场景&我所做的是第一个场景包含菜单项&单击相应的菜单项,用户将被导航到其他场景。但我有一个viewController,它会在从库。所以我想使用该视图控制器来使用核心图形。(GLPaint样式)&现在我的问题是如何在xcode中从菜单场景导航到该视图控制器我们使用pushview/pop视图控制器来导航,但我应该在这里写些什么来从菜单导航到该视图控制器?我对您的描述有点迷茫。如果我能把你的情况说清楚。首先,你有一个带有菜单项的Cocos2D场景,当你点击其中一个菜单项时,你想切换到你的视图控制器?是的,绝对正确,现在你找到我了,罗布,请帮我一下man@kaushal_3010好吧,那么我的初始答案应该有用。请记住,视图控制器不是Cocos组件,因此不能对其应用Cocos CCAction。据我所知。我会看看是否可以稍后再写一些代码示例,让您更好地了解我的建议。@kaushal_3010 Ok在我的回答中为您提供了一些建议。让我知道这是否有帮助,是否有意义。Rob谢谢,但我想要的是我的游戏中有两个场景&我所做的是第一个场景包含菜单项&单击相应的菜单项,用户将被导航