2011-01-30 81 views
0

我希望在用户按下主页按钮时暂停游戏,但是我没有这样做。这就是我所做的。当主页按钮被按下时暂停游戏sdk

  1. 我声明中的appdelegate称为游戏状态一个NSInteger的变量和定义两个常数(kGameStateRunning和kGameStatePaused)来更新变量。

  2. 当viewDidLoad中我mainGameViewController,我设置的游戏状态= kGameStateRunning

  3. 所以我想在这里做的是,当用户按下主页按钮,pauseView被添加到当前mainGameViewController就像什么,用户将看到当他在我创建的游戏中按下暂停按钮时。

我在appdelegate函数中实现它,并使用它在我的viewController中调用pauseGame方法。 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 2011-01-30 08:36:00

相关问题