Прикрепить CCScene к EAGLView - PullRequest
       35

Прикрепить CCScene к EAGLView

1 голос
/ 16 ноября 2011

Я пытаюсь присоединить свой класс CCScene к моему EAGLView.Итак, мой EAGLView - это IBOutlet в классе 1. Я подключил его, установил и получил его.Затем в моем ViewDidLoad в моем классе 1 я делаю:

[[CCDirector sharedDirector] setOpenGLView:self.eaglView];
[[CCDirector sharedDirector] runWithScene:[CCSceneClass node]];

Проблема в том, что он не вызывает класс, который я показываю ниже в моем классе CCScene (я тестировал с NSLogs).В любом случае, допустим, что мой класс CCScene называется CCSceneClass, как мне правильно подключить его из моего ViewDidLoad из Class1 (My 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, так что это означает, что яможно просто избавиться от этих строк?

Это единственный вопрос, который у меня остался!

Спасибо!

1 Ответ

3 голосов
/ 16 ноября 2011

Вы не можете "соединить" класс CCScene с представлением OpenGL, и в этом нет необходимости.

После того, как вы настроили eaglView, вы продолжите как обычно, чтобы запустить вашу сцену с CCDirector:

[[CCDirector sharedDirector] setOpenGLView:self.eaglView];
...
[[CCDirector sharedDirector] runWithScene:[CCSceneClass node]];

Если вам нужен доступ к eaglView внутри вашего класса сцены, вы получите это через CCDirector:

EAGLView* view = [CCDirector sharedDirector].openglView;

UPDATE:

Полный код для инициализации представления Cocos2D в приложении UIKit:

CCDirector* director = [CCDirector sharedDirector];
[director setDirectorType:kCCDirectorTypeDisplayLink];
[director setAnimationInterval:1.0/60];
[director setOpenGLView:(EAGLView*)subview];
[director runWithScene:[HelloWorldLayer scene]];

В моей книге Learn Cocos2D есть глава , в которой более подробно объясняется интеграция Cocos2D в приложение UIKit (и наоборот). Вы также можете загрузить исходный код книги (2-е издание) с этой страницы и посмотреть пример проекта главы 15 "ViewBasedAppWithCocos2D".

...