Переход изнутри cocos2d программно

Я новичок в cocos2d и пытаюсь выполнить переход изнутри cocos2d.

В настоящее время я установил следующую функцию:

-(void) return_mm {
    NSLog(@"returned to main menu");
    UIViewController * con = self.controller;
    [con performSegueWithIdentifier:@"Game2MenuSegue" sender:con];
}

запускаться всякий раз, когда нажимается CCMenuItem. Это действительно работает один раз. Однако, когда я возвращаюсь к игровой сцене, кнопка меню перестает работать.

Чтобы быть более конкретным, вызывается переход и запускается функция preparetosegue, но перехода не происходит. Функция viewWillAppear другого представления никогда не запускается.

Я, вероятно, делаю что-то глупое, поэтому, если у кого-то есть предложения по этому поводу, я был бы очень признателен.

Это то, что у меня сейчас есть в функции willDidAppear контроллера игрового представления.

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];


    if ([[CCDirector sharedDirector] isPaused]) {

        [[CCDirector sharedDirector] resume];

        [mainView addSubview:[[CCDirector sharedDirector] openGLView]];

        return;
    }


    EAGLView *glview = [EAGLView viewWithFrame:self.view.bounds
                                   pixelFormat:kEAGLColorFormatRGB565   // kEAGLColorFormatRGBA8
                                   depthFormat:0                        // GL_DEPTH_COMPONENT16_OES
                        ];
    CCDirector *director = [CCDirector sharedDirector];

    //[director setDisplayStats:kCCDirectorStatsFPS];    
    // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices

    if( ! [director enableRetinaDisplay:YES] )
        CCLOG(@"Retina Display Not supported");

    [window makeKeyAndVisible];

    [mainView addSubview:glview];

    [director setOpenGLView:glview];

    CCScene *scene = [CCScene node];
    GameScene * gs =[GameScene sceneWithController:self]; 
    [gs returnFromMenu];
    [scene addChild:gs];

    if (director.runningScene) {
        [director replaceScene:scene];
    } else {
        [director runWithScene:scene];
    }
}

person Xzhsh    schedule 22.05.2012    source источник
comment
Это будет создавать новый glView каждый раз, когда появляется представление. Это будет проблемой. Вы хотите настроить cocos2d в applicationDidFinishLaunching, а затем только приостановить/возобновить (остановить/запустить анимацию) режиссера.   -  person LearnCocos2D    schedule 23.05.2012
comment
Ааа ладно, попался. Я думаю, что на самом деле это не воссоздание glView, потому что переход приостанавливает режиссер, и он возобновится и вернется, прежде чем воссоздает представление.   -  person Xzhsh    schedule 23.05.2012


Ответы (1)


Я нашел проблему. Я сохранил контроллер при создании, но не обновлял его, когда он возвращается в игровой вид. Контроллер был устаревшим, поэтому переход ничего не делал.

я просто должен был добавить

gs.controller = self

под призывом к супер

person Xzhsh    schedule 22.05.2012