Cocos2d с GameCenter, OpenGLError

Я получаю эту ошибку в определенной ситуации, и я не знаю, как ее решить.

После того, как я приглашаю кого-нибудь поиграть со мной, я нажимаю кнопку «отменить приглашение», затем нажимаю «Отмена», и он вызывает этот метод:

    // The user has cancelled matchmaking
- (void)matchmakerViewControllerWasCancelled:(GKMatchmakerViewController *)viewController {    
    [self.presentingViewController dismissModalViewControllerAnimated:YES];
    NSLog(@"User cancelled the invitation.");    
}

И после этого я получаю эту ошибку:

Ошибка OpenGL 0x0506 в -[EAGLView swapBuffers]

Снова и снова.

Если я не приглашу кого-то и просто нажму «Отмена», он снова вызовет этот метод, но правильно вернется на экран игры. Кто-нибудь видел что-то подобное раньше? Должен ли я остановить приглашение, прежде чем закрыть представление или что-то в этом роде?


person gmemario    schedule 26.09.2011    source источник


Ответы (2)


У меня была аналогичная проблема, и я исправил ее. Трудно было найти решение.

Мне пришлось изменить метод инициализации в AppDelegate следующим образом:

- (void) applicationDidFinishLaunching:(UIApplication*)application
{
    CC_DIRECTOR_INIT();
    // Obtain the shared director in order to...
    CCDirector *director = [CCDirector sharedDirector];
    // Sets landscape mode
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];

    if( ! [director enableRetinaDisplay:YES] )
        CCLOG(@"Retina Display Not supported");
    [[CCDirector sharedDirector] runWithScene: [MainMenuLayer scene]];
    [[CCDirector sharedDirector] setDisplayFPS:NO]; 
    [self authenticateLocalPlayer];
}

Увольнять:

-(void)achievementViewControllerDidFinish:(GKAchievementViewController *)viewController{
     [tempController dismissModalViewControllerAnimated:YES];
        [tempController.view removeFromSuperview];
     [[CCDirector sharedDirector] resume];
}
person Mobile Developer    schedule 03.05.2012

Не уверен, поможет ли это, но, возможно, приостановите CCDirector перед отображением пользовательского интерфейса Game Center и возобновите его, когда все действия Game Center будут выполнены.

person Rob Segal    schedule 27.09.2011