在非cocos2d项目中包含cocos2d

时间:2012-09-11 08:28:51

标签: iphone ios animation cocos2d-iphone

我做了一些谷歌搜索和堆栈溢出,但仍然存在问题该怎么做。 我有一个基于导航的大项目,iOS5.1,用于iPhone。 在几个VC上,我需要包含一些或多或少复杂的动画,比如一个男孩角色的咀嚼动画。 我和cocos2d一起工作,我知道用cocos2d完成我的目标很容易。但是有可能以某种方式将coco2sd中的场景和层包含到所需的VC中吗?或者以某种方式将视图与s场景重叠? 任何提示都将受到高度赞赏。

2 个答案:

答案 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的帖子成功实现了这一点! ;)