Приостановка игры при нажатии кнопки «Домой» для iphone SDK - PullRequest
0 голосов
/ 30 января 2011

Я хочу приостановить игру, когда пользователь нажимает кнопку «Домой», однако я не могу этого сделать.Вот что я сделал.

  1. Я объявляю переменную NSInteger в appdelegate с именем gamestate и определяю две константы (kGameStateRunning и kGameStatePaused) для обновления переменной.

  2. Когда viewdidload для моего mainGameViewController, я устанавливаю gamestate = kGameStateRunning

  3. Так что я хочу сделать здесь, когда пользователь нажимает домашнюю кнопку, pauseView добавляется в текущий mainGameViewController так же, какпользователь увидит, когда он нажимает кнопку паузы во время игры, которую я создал.

Я реализую ее в функции appdelegate и использую ее для вызова метода pauseGame в моем viewController.NSLog показывает, что кнопка home нажата, но она не добавляет вид паузы, который я создал программно.Это потому, что он не понимает [self.view addSubView: pauseView], если бы я вызывал это в appDelegate.Спасибо за помощь.Вот код

- (void)applicationWillResignActive:(UIApplication *)application {
    if (gameState == kGameStateRunning) {
        [self.viewController pauseGame];
        NSLog(@"home button pressed");
    }
    else if (gameState == kGameStatePaused) {
        NSLog(@"not running");

-(void)pauseGame{
//pause all functions
NSLog(@"pause");
[gameTimer invalidate];
[hHpointer.packageSpawningTime invalidate];

for (Package *package in hHpointer.packageArray) {
    [package.timeSinceSpawn invalidate];
}

//create the view
pauseView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 480, 320)];
[pauseView setBackgroundColor:[UIColor grayColor]];
pauseView.alpha = 0.5;
[self.view addSubview:pauseView];
    }

1 Ответ

1 голос
/ 30 января 2011

Если вы вызываете это из делегата приложения, у вас есть указатель на окно, а не на представление.

Как таковой, вы должны позвонить: [self.window addSubview:pauseView];

Когда приложение запускается заново, убедитесь, что реализован метод - (void)applicationDidBecomeActive:.

И убрать вид вызова [pauseView removeFromSuperview].

Надеюсь, это поможет.

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