我做了一些谷歌搜索和堆栈溢出,但仍然存在问题该怎么做。 我有一个基于导航的大项目,iOS5.1,用于iPhone。 在几个VC上,我需要包含一些或多或少复杂的动画,比如一个男孩角色的咀嚼动画。 我和cocos2d一起工作,我知道用cocos2d完成我的目标很容易。但是有可能以某种方式将coco2sd中的场景和层包含到所需的VC中吗?或者以某种方式将视图与s场景重叠? 任何提示都将受到高度赞赏。
答案 0 :(得分:2)
我这样做的方法就是在初始化ViewController时创建一个CCDirector,CCDirector使用一个OpenGL视图来制作ViewController的子视图。使用CCDirector,您可以完成通常在Cocos2D中执行的所有操作。
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
[CCDirector setDirectorType:kCCDirectorTypeMainLoop];
CCDirector *director = [CCDirector sharedDirector];
EAGLView *glview = [EAGLView viewWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
[self.view insertSubview:glview atIndex:1];
[director setOpenGLView:glview];
答案 1 :(得分:1)
首先,您需要在AppDelegate中创建一个导演:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
// Create Cocos2D Director
//
// Try to use CADisplayLink director
// if it fails (SDK < 3.1) use the default director
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
[CCDirector setDirectorType:kCCDirectorTypeDefault];
CCDirector *director = [CCDirector sharedDirector];
}
在您的-viewDidLoad
方法中,将Cocos2D创建的视图添加到self.view
作为子视图:
- (void)viewDidLoad {
[super viewDidLoad];
// configre subviews
// ...
// Add your Cocos2D view
EAGLView * glView = [EAGLView viewWithFrame:self.view.bounds
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0];
[glView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[[CCDirector sharedDirector] setOpenGLView:glView];
[self.view addSubview:glView];
// Run a blank scene for testing
CCScene * blankScene = [CCScene node];
[[CCDirector sharedDirector] runWithScene:blankScene];
}
您可以创建自己的场景,然后替换blankScene
。
我强烈推荐你关于这项技术的帖子:"How To Integrate Cocos2D and UIKit"。我通过阅读@ Ray的帖子成功实现了这一点! ;)