2010-08-05 56 views
0

因此,这是一笔交易,我一直在开发基于开源tweeJump的游戏,作为较大应用程序的一小部分。iPhone - 卸载在视图控制器内运行的cocos2d游戏

我已经成功地获得了游戏加载(从一个tableView),并能够玩它,但我不太清楚如何停止运行cocos2d并返回到启动游戏的表视图。我试过在cocos2d里面实现一个按钮来停止CCDirector,但是基本上只是冻结了我的应用程序 - 我不太确定如何弹出视图控制器。我对cocos2d不是很熟悉,所以我会很感激任何帮助。谢谢。

下面是一些相关的代码:

的的appDelegate(不运行游戏,但树立CCDirector供以后使用):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

// Add the tab bar controller's current view as a subview of the window 
[window addSubview:tabBarController.view]; 

[application setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES]; 

[[CCDirector sharedDirector] setPixelFormat:kRGBA8]; 
[[CCDirector sharedDirector] setAnimationInterval:1.0/kFPS]; 

[CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888]; 

[window makeKeyAndVisible]; 

return YES; 
} 

下面是视图控制器相关的实施(这是我从一个tableViewController加载),这是运行游戏,一切都在的loadView:

(void)loadView{ 
if (!load) { 
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
load = YES; 
[[CCDirector sharedDirector] attachInWindow:window]; 
[window makeKeyAndVisible]; 
CCScene *scene = [[CCScene node] addChild:[Game node] z:0]; 
[[CCDirector sharedDirector] runWithScene: scene]; 
} 
} 

回答

-1

你不能只是做一个单独的您的TableView一部分cocos2d场景,然后只是切换场景?

这些示例方法我在我的应用程序委托该切换场景:

- (void)loadGameOverScene { 
    [_gameOverScene.layer.label setString:@"You Lose :["]; 
    [_gameOverScene.layer reset]; 
    [[CCDirector sharedDirector] replaceScene:_gameOverScene]; 
} 

- (void)loadWinScene { 
    [_gameOverScene.layer.label setString:@"You Win!"]; 
    [_gameOverScene.layer reset]; 
    [[CCDirector sharedDirector] replaceScene:_gameOverScene]; 
} 

- (void)loadNewLevelScene { 
    [_newLevelScene.layer reset]; 
    [[CCDirector sharedDirector] replaceScene:_newLevelScene]; 
} 

- (void)nextLevel { 
    [_mainScene.layer reset]; 
    [[CCDirector sharedDirector] replaceScene:_mainScene]; 
} 

- (void)restartGame { 
    _curLevelIndex = 0; 
    [self nextLevel]; 
} 

- (void)levelComplete {  

    _curLevelIndex++; 
    if (_curLevelIndex >= [_levels count]) { 
     _curLevelIndex = 0; 
     [self loadWinScene]; 
    } else { 
     [self loadNewLevelScene]; 
    } 

} 

此外,cocos2d的有一个菜单系统,以及:CCMenu和CCMenuItem。

下面是关于如何使用不同类型的菜单的教程:

http://www.raywenderlich.com/414/how-to-create-buttons-in-cocos2d-simple-radio-and-toggle

我喜欢雷的教程。希望这可以帮助!

-1

我用它来打开cocos2d中的GameCenter leaderboard。

GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] 

    init]; 
     if (leaderboardController != NULL) 
     { 
      leaderboardController.leaderboardDelegate = self; 
      AppController *app = (AppController*) [[UIApplication sharedApplication] delegate]; 

      [[app navController] presentModalViewController:leaderboardController animated:YES]; 

      [leaderboardController release]; 
     } 

只要调用你的viewController来代替leaderboardController就可以了。