cocos2d 2.0-rc2: завершите директорию и перезапустите
У меня есть игра на основе cocos2d, которая использует меню UIKit, поэтому я использую фреймворк только для одного viewcontroller, который является самой игрой. Кроме того, у него есть только одна сцена. Поскольку cocos2d 2.0 сам директор являетсяUIViewController
подкласс, так что я просто запихнуть его в свойMenuViewController
когда пользователь нажимает кнопку запуска:
-(void)startGameButtonPressed {
CCDirectorIOS* director = (CCDirectorIOS *) [CCDirector sharedDirector];
// Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits
self.glView = [CCGLView viewWithFrame:CGRectMake(0, 0, 480, 320)
pixelFormat:kEAGLColorFormatRGB565 //kEAGLColorFormatRGBA8
depthFormat:0 //GL_DEPTH_COMPONENT24_OES
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
// attach the openglView to the director
[director setView:glView];
[director runWithScene:[GameLayer scene]];
[director setDelegate:(id <CCDirectorDelegate>) [[UIApplication sharedApplication] delegate]];
[self.navigationController pushViewController:director animated:YES];
}
Это отлично работает при первом вызове метода, когда пользователь запускает первую игру. Когда игра заканчивается, я звоню[[CCDirector sharedDirector] end]
.
Большая часть настройки директора выполняется в appDelegate (она не изменена по сравнению со стандартным шаблоном Cocos2d). Я только положилCCGLView
в качестве оставшейся собственности в мойMenuViewController
потому что в противном случае приложение вылетает, когда[[CCDirector sharedDirector] end]
называется иCCGLView
не сохраняется. Я думаю, что это может быть ошибка Cocos2D. В[[CCDirector sharedDirector] end]
рамки называет[self setView:nil]
, но он все еще пытается получить доступ к представлению позже (возможно, в другом потоке).
Проблема теперь в том, что при втором вызове моего метода выше (когда пользователь хочет запустить другую игру из меню),startGameButtonPressed
, режиссер толкается, но экран остается черным. Игра запущена и отвечает, я просто ничего не вижу. Может кто-нибудь помочь мне с этим?