我做了一些谷歌搜索和stackoverflowing,但仍然存在该怎么做的问题。我有一个用于 iphone 的大型导航项目 iOS5.1。在几个 VC 上,我需要包含一些或多或少复杂的动画,比如男孩角色的咀嚼动画。我使用过 cocos2d,我知道使用 cocos2d 很容易实现我的目标。但是是否有可能以某种方式将 coco2sd 的场景和图层包含到所需的 VC 中?或者以某种方式将视图与场景重叠?任何提示将不胜感激。
问问题
475 次
2 回答
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];
于 2012-09-11T08:56:17.730 回答
1
首先,您需要在 AppDelegate 中创建一个 director:
- (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
then。
我强烈推荐你一篇关于这项技术的文章:“如何集成 Cocos2D 和 UIKit”。我通过阅读@Ray 的帖子成功地实现了这一点!;)
于 2012-09-11T09:02:37.177 回答