我正在尝试将我的CCScene类附加到我的EAGLView。因此,我的EAGLView是Class 1中的IBOutlet。我将它连接起来并进行设置和冒充。然后在我的Class 1的ViewDidLoad中我做:
[[CCDirector sharedDirector] setOpenGLView:self.eaglView];
[[CCDirector sharedDirector] runWithScene:[CCSceneClass node]];
问题是它没有调用我在CCScene类中显示的类(我使用NSLogs测试过)。无论如何我要说我的CCScene类名为CCSceneClass,我如何从Class1(My UIViewController)中的ViewDidLoad正确连接它,以便调用我的CCScene类中的这个方法?
这也是我在这个方法中做的一些代码,如果这很重要的话:
-(id)initWithEaglView:(EAGLView*)view {
NSLog(@"initWithEAGLView");
//Attach CCDirector to EAGLView
director = [CCDirector sharedDirector];
[director setOpenGLView:view];
//Make CCLayer and CCScene
CCScene *scene = [CCScene node];
CCLayer *layer = [CCLayer node];
[scene addChild:layer];
[director runWithScene:scene];
[director setDisplayFPS:NO];
}
谢谢!
我的问题:
1。这两行的重点是什么(顺便说一句,第一行提出警告说,找不到该方法:
[director setDirectorType:kCCDirectorTypeDisplayLink];
[director setAnimationInterval:1.0/60];
我的CCLayer课程已经有了一个游戏循环,所以这是否意味着我可以摆脱这些界限?
这是我留下的唯一问题!
谢谢!
答案 0 :(得分:3)
您不能将CCScene类与OpenGL视图“连接”,并且没有必要真的。
设置eaglView之后,您可以正常使用CCDirector运行场景:
[[CCDirector sharedDirector] setOpenGLView:self.eaglView];
...
[[CCDirector sharedDirector] runWithScene:[CCSceneClass node]];
如果您需要访问场景类中的eaglView,可以通过CCDirector获取:
EAGLView* view = [CCDirector sharedDirector].openglView;
<强>更新强>
在UIKit应用程序中初始化Cocos2D视图的完整代码:
CCDirector* director = [CCDirector sharedDirector];
[director setDirectorType:kCCDirectorTypeDisplayLink];
[director setAnimationInterval:1.0/60];
[director setOpenGLView:(EAGLView*)subview];
[director runWithScene:[HelloWorldLayer scene]];
我的Learn Cocos2D book中有一章更详细地解释了Cocos2D在UIKit应用程序中的集成(反之亦然)。您也可以从该页面下载book's source code(第2版),并查看第15章示例项目“ViewBasedAppWithCocos2D”。