2016-05-01 28 views
1

Das mag eine wirklich grundlegende Frage sein, aber ich habe ein einfaches Spiel gemacht, in dem der Benutzer entgegenkommende Hindernisse vermeidet. Wenn ich die Home-Taste drücke, läuft meine App immer noch im Hintergrund, und die App-Musik läuft weiter und alle meine NSTIMERS fahren fort, was schließlich dazu führt, dass der Spielcharakter auf ein Hindernis trifft.Spiel kann nicht angehalten werden, wenn App im Hintergrundzustand ist

Kann mir zeigen, wie ich das Spiel pausiere, wenn ich die Home-Taste drücke oder zu einer anderen App wechsle (Spiel ist im Hintergrund), dann weiter, wenn die App wieder im Vordergrund ist?

+1

Bitte stellen Sie sicher, dass Sie dies lesen und versuchen, Ihre Frage zu verbessern: http://stackoverflow.com/help/mcve –

+0

Was genau ist falsch daran? – 1QuickQuestion

+0

@ 1QuickQuestion Ich denke, er möchte mehr Informationen über Ihren Code wissen. Jedenfalls habe ich eine Antwort hinterlassen, ob es dir helfen kann. –

Antwort

0

Es ist ganz einfach ...

Mit diesem Code:

[[NSNotificationCenter defaultCenter] addObserver: self 
             selector: @selector(pauseGameSoUserDoesNotDieForNoReason:) 
              name: UIApplicationDidEnterBackgroundNotification 
              object: nil]; 

Legen Sie es in der Setup-Methode von .m-Datei, die Timer und die Methode enthält.




dies auch in der M-File-Put

-(void)pauseGameSoUserDoesNotDieForNoReason:(NSNotification*)theNotification{ 

} 

Diese letzte Methode:
-(void)pauseGameSoUserDoesNotDieForNoReason:(NSNotification*)theNotification
ist, wo Sie Ihre Pausieren Code zu setzen.

Hinweis:

Dieser Code kann in mehreren .m-Dateien platziert werden.

+0

SIE SIND EIN LEBENSRETTER! Vielen Dank! Ich dachte, es wäre eine ziemlich einfache Lösung! Danke vielmals! – 1QuickQuestion

1

Ich weiß nicht, wie Sie Ihren Code getan, aber wenn der Benutzer die App im Hintergrund setzen können Sie diese Methode in AppDelegate.m verwenden, den genauen Zeitpunkt zu wissen:

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 

    NSLog(@"going to background"); 
} 

Innerhalb von Mit der Methode kannst du deine Musik stoppen und alle NSTIMERS einstellen. Und Sie können diese verwenden:

- (void)applicationWillEnterForeground:(UIApplication *)application { 
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 

    NSLog(@"Back from Foreground"); 
} 

Zu wissen, wenn der Benutzer aus dem Hintergrund in den Vordergrund kommen.

+0

Danke J, das war hilfreich, aber ich habe tatsächlich etwas ähnliches in meiner AppDelegate. Mein Problem ist, dass ich eine Methode aufrufen möchte, um das Spiel im "NSLog (@" zum Hintergrund ") zu unterbrechen;" Zeigen Sie und setzen Sie an der Stelle von "NSLog (@" Zurück vom Vordergrund ") fort;". – 1QuickQuestion

+0

Oh ich habe es. Ich sah, dass du eine Antwort akzeptiert hast. Das ist toll :) –