2011-01-30 2 views
0

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

  1. Я объявляю переменную NSInteger в AppDelegate называется GameState и определить две константы (kGameStateRunning и kGameStatePaused), чтобы обновить переменную.

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

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

Я реализую его в функции appdelegate и использует его для вызова метода pauseGame в моем viewController. NSLog показывает, что нажата кнопка дома, но, похоже, она не добавляет представление паузы, которое я создал с ней программно. Это потому, что он не понимает [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

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

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

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

И удалите вызов, вызывающий [pauseView removeFromSuperview].

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

+0

Предположим, что мой pauseView создан в ландшафтном режиме, pauseView.frame = CGRectMake (0,0,480,320), он, похоже, не закрывает окно должным образом. Как настроить ориентацию окна? – Jin

Смежные вопросы