iPhone - выгрузка игры cocos2d, которая выполняется внутри View Controller - PullRequest
0 голосов
/ 05 августа 2010

Итак, вот в чем дело, я создавал игру на основе tweeJump с открытым исходным кодом как небольшую часть более крупного приложения.

Я успешно загрузил игру (из 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];
}
}

Ответы [ 2 ]

0 голосов
/ 22 июля 2013

Я использую это для открытия таблицы лидеров GameCenter внутри cocos2d.

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, он будет работать.

0 голосов
/ 21 ноября 2010

Не могли бы вы просто сделать свой 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

Мне нравятся уроки Рэя.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...