【问题标题】:Pause game when home button is pressed for iphone sdkiphone sdk按下主页按钮时暂停游戏
【发布时间】:2011-01-30 16:16:48
【问题描述】:

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

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

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

  3. 所以我在这里想要做的是,当用户按下主页按钮时,将 pauseView 添加到当前 mainGameViewController,就像用户在我创建的游戏期间按下暂停按钮时所看到的一样。

我在 appdelegate 函数中实现它,并使用它在我的 viewController 中调用 pauseGame 方法。 NSLog 显示按下主页按钮,但它似乎没有添加我以编程方式创建的暂停视图。是不是因为如果我要在 appDelegate 中调用它,它不理解 [self.view addSubView:pauseView]。谢谢您的帮助。这是代码。

- (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];
    }

【问题讨论】:

    标签: iphone xcode


    【解决方案1】:

    如果您从应用程序委托中调用它,则您有一个指向窗口的指针,而不是一个视图。

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

    当应用重新启动时,确保实现- (void)applicationDidBecomeActive: 方法。

    并移除调用[pauseView removeFromSuperview]的视图。

    我希望这会有所帮助。

    【讨论】:

    • 假设我的 pauseView 是在横向模式下创建的,pauseView.frame = CGRectMake(0,0,480,320),它似乎没有正确覆盖窗口。如何倾斜我的窗口方向?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多