2014-05-13 2 views
1

스토리 보드 안에 cocos2d 게임을로드 중입니다. Cocos2d 장면 (IntroLayer)과 게임을 시작하는 IntroLayer를로드하는 CocosViewController를 구현했습니다. 내가 CocosViewController로 돌아가거나 타이머 (카운트 다운) 게임에서 0 일 때 새로운 viewcontroller를 열고 싶습니다. 카운트 다운이 제로에 도착했을 때와의 OnExit 방법에 CocosViewController *cocos = [[CocosViewController alloc] init]; [cocos.navigationController dismissViewControllerAnimated:YES completion:nil]; 으로하지만, 응용 프로그램 충돌 카운트 다운이 제로에 어떤 제안을 도착했을 때Cocos2d 장면에서 ViewController 푸시

나는 [[CCDirector sharedDirector] popScene];를 호출 시도?

내 CocosViewController는 IntroLayer이 게임의 장면을 만들어적인 Cocos2D

-(void)setupCocos2d { 
    CCDirector *director = [CCDirector sharedDirector]; 
    //[[[self navigationController] navigationBar] setHidden:YES]; 


    if([director isViewLoaded] == NO) 
    { 
     // Create the OpenGL view that Cocos2D will render to. 
     CCGLView *glView = [CCGLView viewWithFrame:self.view.bounds 
             pixelFormat:kEAGLColorFormatRGB565 
             depthFormat:0 
           preserveBackbuffer:NO 
             sharegroup:nil 
            multiSampling:NO 
            numberOfSamples:0]; 

     // Assign the view to the director. 
     director.view = glView; 


     // Initialize other director settings. 
     [director setAnimationInterval:1.0f/60.0f]; 
     [director enableRetinaDisplay:YES]; 
    } 

// Set the view controller as the director's delegate, so we can respond to certain events. 
director.delegate = self; 

// Add the director as a child view controller of this view controller. 
[self addChildViewController:director]; 


// Add the director's OpenGL view as a subview so we can see it. 
[self.view addSubview:director.view]; 
[self.view sendSubviewToBack:director.view]; 

// Finish up our view controller containment responsibilities. 
[director didMoveToParentViewController:self]; 

// Run whatever scene we'd like to run here. 
NSArray *parameters = [[NSArray alloc] initWithObjects:@"3", @"sound", @"countdown", nil]; 
if(director.runningScene) 
    [director replaceScene:[IntroLayer scene]; 
else 
    [director pushScene:[IntroLayer scene]; 
} 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSLog(@"cocos2d controller viewdidload"); 
    [self setupCocos2d]; 
} 

-(void)viewDidUnload { 
    NSLog(@"did unload"); 
    [[CCDirector sharedDirector] setDelegate:nil]; 
    [[CCDirector sharedDirector] end]; 
} 

을 설정합니다. 이것은 내 onExit 메소드입니다.

-(void) onExit{ 
     NSLog(@"Introscene exit"); 
     [super onExit]; 
    } 

그리고 이것은 게임입니다. 게임이 끝나면 viewcontroller를로드하고 싶습니다. 코드 아래로 ViewConrtroller으로 팝 IntroLayer를 들어

-(void)update:(ccTime)dt{ 
    if (myTime > 0) { 
     myTime -= (float)dt; 
     [timeLabel setString:[NSString stringWithFormat:@"%.2f", myTime]]; 
    } else { 
     myTime = 0; 
     [timeLabel setString:[NSString stringWithFormat:@"0.00"]]; 
     [[CCDirector sharedDirector] popScene]; 
    } 

    if (clicks < currentClicks) { 
     clicks = currentClicks; 
     //[clicksLabel setString:[NSString stringWithFormat:@"%i", clicks]]; 
    } 
} 

-(void) onExit 
{ 
    [super onExit]; 

    [[CCDirector sharedDirector] stopAnimation]; 
    CocosViewController *cocos = [[CocosViewController alloc] init]; 
    [cocos.navigationController dismissViewControllerAnimated:YES completion:nil]; 

    // [cocos.navigationController popViewControllerAnimated:YES]; 

    //AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    //[app.navController popViewControllerAnimated:YES]; 
    //dismissModalViewControllerAnimated:YES 

    NSLog(@"game exit"); 
} 

답변

0

[[[CCDirector sharedDirector] navigationController] popViewControllerAnimated:YES]; 
관련 문제