我试图将我的CCScene类附加到我的EAGLView。我的EAGLView是类1中的IBOutlet。我连接它,设置和获取它。然后在ViewDidLoad中在Class 1中输入
[[CCDirector sharedDirector] setOpenGLView:self.eaglView];
[[CCDirector sharedDirector] runWithScene:[CCSceneClass node]];
问题是它没有调用我在CCScene类中显示的类(我用NSLogs测试)。不管怎样,让我们说我的CCScene类被命名为CCSceneClass,我将如何正确地连接它从我的ViewDidLoad从Class1(我的UIViewController),使这个方法在我的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类,所以这是否意味着我可以摆脱这些行?
这是我唯一剩下的问题了!
谢谢!
你不能"连接"一个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书中有一章更详细地解释了在UIKit应用中集成Cocos2D(反之亦然)。您也可以从该页下载本书的源代码(第二版),并查看第15章的示例项目"ViewBasedAppWithCocos2D"。