1

我正在尝试使用 SpriteKit 为 iPhone 编写游戏。几乎一切都很好并且按照我的预期运行,但唯一的问题是当我测试它以查看如果我回到主屏幕并返回应用程序会发生什么时,我注意到每次我回到应用程序时都会显示它最后一个状态,然后在一秒钟后突然关闭应用程序。我的应用程序正在使用声音,我注意到如果我删除播放声音动作,一切都很好。声音动作是这样的:

SKAction * playClickSound = [SKAction playSoundFileNamed:@"buttonClick.caf" waitForCompletion:NO];
[self runAction:playClickSound];

有趣的是,如果我的应用程序运行但没有得到运行此操作的目的,那么当我在应用程序和主屏幕之间来回切换时一切正常。有趣的是它在模拟器上似乎没问题,而且这个问题只发生在我在 iPod touch 上运行代码时。在此先感谢您的帮助。

4

2 回答 2

0

因此,答案是AVAudioSession在应用程序退出活动时在应用程序委托中添加禁用,并在它再次变为活动时再次启用它。此行应添加到 AppDelegate.m 文件的顶部:

@import AVFoundation;

并且必须添加到以下函数中[[AVAudioSession sharedInstance] setActive:NO error:nil];[[AVAudioSession sharedInstance] setActive:YES error:nil];

- (void)applicationWillResignActive:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:NO error:nil];
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:NO error:nil];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
}

特别感谢@0x7fffffff 的帮助。

于 2014-04-02T02:53:45.650 回答
-1

当您的应用程序由于内存压力而在后台终止时会发生这种情况。不幸的是,由于 iOS 7 的新图形“功能”,这种情况现在更频繁地发生,尤其是在旧设备上。

您应该考虑为您的应用实施状态恢复。

于 2014-04-02T01:19:12.897 回答