SpriteKit游戏中的多任务问题

时间:2014-05-04 03:25:51

标签: ios iphone objective-c sprite-kit multitasking

我正在使用Sprite Kit开发游戏,但我遇到了多任务问题。当我按下主页按钮时,在游戏执行期间,我的SKScene.paused变为真,我在AppDelegate.m的applicationDidEnterBackground方法中对应用程序进行了适当的更改,例如使用NSUserDefaults保存内容。无论如何,如果我再次打开我的应用程序,它应该从它停止的地方恢复,但会发生什么是我的应用程序终止并重新开始。这只发生在我的iPhone上(在iOS模拟器中它工作正常)。由于我是使用Sprite Kit创建游戏并创建应用程序的新手,所以我希望找到一些可能出现问题的线索...

PS:我认为问题在于应用程序没有被正确“暂停”,因为如果我按下主页按钮并立即重新打开应用程序,它就可以正常工作。

这是我的代码:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    if(self.scene == nil) return;

    [self.scene saveUserDefaults];    
    [self.scene pausar];
    self.scene.paused = true;
}

在MyScene.m中,在initWithSize方法内:

-(id)initWithSize:(CGSize)size {    
if (self = [super initWithSize:size]) {
    /* Setup your scene here */

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    appDelegate.scene = self;

在AppDelegate.h文件中:@property (weak, nonatomic) MyScene * scene; 现在,saveUserDefaults方法,在MyScene.m文件中:

-(void) saveUserDefaults
{
    [userDefaults setBool:true forKey:@"active"];
    [userDefaults setInteger:highScore forKey:@"highScore"];
    [userDefaults setBool:soundOn forKey:@"soundOn"];
    [userDefaults setBool:musicOn forKey:@"musicOn"];
    [[NSUserDefaults standardUserDefaults] synchronize];

}

1 个答案:

答案 0 :(得分:3)

好吧,如果没有看到更多代码,就无法知道导致问题的原因。

首先,read this question。同样地,你应该阅读UIAppDelegate课程,因为在手机上进行编程时你必须非常清楚这一点,当有人使用你的应用程序时,可能会发生电话等频繁中断。

很可能,您对如何响应委托中的某个协议方法有疑问。