Sprite Kit奇怪的背景行为,在模拟器上不同于设备

时间:2014-04-11 13:39:26

标签: ios7 sprite-kit background-process

当我的精灵套装游戏进入后台时,我有一个NSNotification来暂停游戏和背景音乐。通知是......

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground) name:UIApplicationWillEnterForegroundNotification object:nil];

指示的两个选择器方法是..

- (void)willEnterForeground
{
SKView *skView = (SKView *)self.view;
skView.scene.paused = NO;
[[SKTAudio sharedInstance] resumeBackgroundMusic];
}

- (void)willEnterBackground
{
SKView *skView = (SKView *)self.view;
skView.scene.paused = YES;
[[SKTAudio sharedInstance] pauseBackgroundMusic];
}

SKTAudio sharedInstance来自Ray Wenderlich的教程并停止AVAudioSession并通过播放和暂停重新启动它。我在选择器方法的所有行上放置断点,并在使用模拟器时执行每个断点。一切都按计划运行,当应用程序进入后台时,我的应用程序会暂停音乐。当我把它带回来时,音乐会重新启动,游戏会在它停止的地方继续播放。

当我在iPhone上玩游戏时,问题出现了,而不是通过Xcode。当我正常玩游戏时,我让应用程序转到后台,返回时,它会将我带到我的打开屏幕而不是像模拟器中那样的游戏。我错过了什么吗?为什么手机在模拟器上的表现会有所不同。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

请参阅昨天回答的上一个问题和解决我问题的链接......

Handling interruptions in Sprite Kit - can't get sound effects via [SKAction playSoundFileNamed: to work after interruption

我相信你的问题是AVAudioSession在进入后台时仍然有效。