0

我是 cocos2d 的初学者,我正在尝试从 cocos2d 内部执行 segue。

目前我设置了以下功能:

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

每当按下 CCMenuItem 时运行。这实际上确实有效一次。但是,当我重新回到游戏场景时,菜单按钮停止工作。

更具体地说,调用 segue 并运行 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];
    }
}
4

1 回答 1

0

我发现了问题。我在创建时保存了控制器,但是当它重新进入游戏视图时没有更新它。控制器已经过时,所以 segue 没有做任何事情。

我只需要添加

gs.controller = self

在对 super 的调用下方

于 2012-05-22T23:01:27.297 回答