2011-11-09 37 views
2

我有2個UIViewController在每個UIViewController中實現cocos2d場景。 如果用戶點擊「Page2」按鈕,它將變成第二個視圖控制器。 如果用戶點擊第二個視圖控制器中的「返回」按鈕,它將更改爲第一個視圖控制器。爲什麼我的UIView中的cocos2D場景沒有響應?

這是我的 「第2頁」 按鈕的代碼:

[[CCDirector sharedDirector] end]; 

    p2 = [[Page2ViewController alloc] initWithNibName:@"Page2ViewController" bundle:nil]; 
    [UIView beginAnimations:@"Page2" context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES]; 
    [self.view addSubview:p2.view]; 
    [UIView commitAnimations]; 

在此之後,第2頁與cocos2d的場景仍然有響應。如果我按下「返回」按鈕,我的cocos2d場景將不會響應,但不會出現錯誤,不會發出警告,也不會有任何消息。我試圖把NSLog放入viewDidLoad,viewWillAppear,viewDidAppear但是沒有通過我的代碼。這是我的「返回」按鈕代碼:

[[CCDirector sharedDirector] end];

[UIView beginAnimations:@"Back to Home" context:nil]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view.superview cache:YES]; 
[self.view removeFromSuperview]; 
[UIView commitAnimations]; 

任何想法.....

回答

0

之前CCDirector不要叫end感謝。相反,請使用stopAnimationstartAnimation臨時暫停Cocos2D。我不確定這是否可以幫助解決您的問題,但它可能。

+0

如果我不把結束對CCDirector它會返回錯誤,因爲「你不能運行一個場景,如果另一個場景是運行」。我爲每個UIViewController設置了cocos2d場景。任何其他的想法??謝謝 –

+1

是的,你需要使用replaceScene而不是runWithScene。 RunWithScene只能用於加載第一個場景。 – LearnCocos2D

0

這可能是一些很好的: -

例如,在第一個按鈕單擊移動到SecondScene: -

- (空)buttonClicked_color:(ID)發送 {

[[CCDirector sharedDirector] pushScene:[CCTransitionFade transitionWithDuration:0.5 scene:[SecondScene node]]]; 

}

並且當在SecondScene中並且想要返回FirstScene時: -

- (空)buttonClicked_alpha:(ID)發送 {

[[CCDirector sharedDirector] pushScene:[CCTransitionFade transitionWithDuration:0.5 scene:[FirstScene node]]]; 

}

相關問題