Невозможно показать сцену с Cocos2D при использовании UITabBarController - PullRequest
0 голосов
/ 15 марта 2010

Я новичок в Cocos2D, но у меня возникли серьезные проблемы при попытке загрузить кокосовую сцену в одном из контроллеров UIView, смешанном с другими обычными UIKit UIViewControllers.

Мой проект использует UITabBarController для управления четырьмя контроллерами представления. Три являются обычными контроллерами представления UIKit, в то время как один из них я хочу использовать cocos2D (чтобы нарисовать некоторые спрайты и анимировать их).

Вот что я сделал до сих пор. В методе applicationDidFinishLaunching я инициализирую cocos2D для использования окна и беру первое представление tabbarcontroller:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  if( ! [CCDirector setDirectorType:CCDirectorTypeDisplayLink] ) {
    [CCDirector setDirectorType:CCDirectorTypeDefault];
  }

  [[CCDirector sharedDirector] setPixelFormat:kPixelFormatRGBA8888];
  [CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888];
  [[CCDirector sharedDirector] setDisplayFPS:YES];

  [[CCDirector sharedDirector] attachInView: window];   

  [[[CCDirector sharedDirector] openGLView] addSubview: tabBarController.view];
  [window makeKeyAndVisible];  
}

Затем в третьем коде UIViewController (где я хочу использовать cocos2D) я делаю это (примечание: представление загружается из файла NIB с пустым UIView и ничего больше): \

- (void)viewDidLoad {
  [super viewDidLoad];

  // 'scene' is an autorelease object.
  CCScene *myScene = [CCScene node];

  // 'layer' is an autorelease object.
  MyLayer *myLayer = [MyLayer node];

  // add layer as a child to scene
  [myScene addChild: myLayer];

  [[CCDirector sharedDirector] runWithScene: myScene];  
}

Однако все, что я вижу, это чистый белый вид и ничего больше. Если я вызываю следующее в viewdidLoad:

  [[CCDirector sharedDirector] attachInView: self.view];    

Приложение аварийно завершает работу, сообщая, что CCDirector уже подключен. Пожалуйста, помогите!

1 Ответ

1 голос
/ 19 марта 2010

Из того, что я вижу, есть смысл, почему происходит сбой. Вы уже позвонили attachInView в applicationDidFinishLaunching, а затем пытаетесь подключить его снова в viewDidLoad. Глядя на ваш код, есть несколько вещей, которые на самом деле не имеют смысла для меня.

Если я правильно понимаю ваше намерение, вам нужно будет только позвонить attachInView в viewDidLoad, но вы можете оставить установочные вызовы CCDirector там, где они находятся applicationDidFinishLaunching

Я инициализирую cocos2D, чтобы использовать окно и возьмите первый tabbarcontroller вид:

Эта часть меня немного смущает. Где вы хотите, чтобы представление Cocos2D в конечном итоге. От кого вы хотите, чтобы это было у ребенка, и хотите ли вы, чтобы у него были какие-либо детские взгляды?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...