将CCScene附加到EAGLView

时间:2011-11-16 06:06:26

标签: ios cocos2d-iphone eaglview

我正在尝试将我的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课程已经有了一个游戏循环,所以这是否意味着我可以摆脱这些界限?

这是我留下的唯一问题!

谢谢!

1 个答案:

答案 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”。