为iphone sdk按下主页按钮时暂停游戏

时间:2011-01-30 07:47:42

标签: iphone xcode

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

  1. 我在appdelegate中声明了一个名为gamestate的NSInteger变量,并定义了两个常量(kGameStateRunning和kGameStatePaused)来更新变量。

  2. 当我的mainGameViewController的viewdidload,我设置gamestate = kGameStateRunning

  3. 所以我想在这里做的是当用户按下主页按钮时,暂停视图被添加到当前的mainGameViewController,就像用户在我创建的游戏过程中按下暂停按钮时所看到的那样。

  4. 我在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 个答案:

答案 0 :(得分:1)

如果你从app委托中调用它,你有一个指向窗口的指针,而不是一个视图。

因此,您应致电:[self.window addSubview:pauseView];

当应用重启时,请确保实施- (void)applicationDidBecomeActive:方法。

删除调用[pauseView removeFromSuperview]的视图。

我希望这会有所帮助。