ios - 处理 Sprite Kit 中的中断 - 无法通过 [SKAction playSoundFileNamed : to work after interruption 获得音效

标签 ios audio sprite-kit avaudioplayer

处理 Sprite Kit 中的中断 - 无法通过 [SKAction playSoundFileNamed: 在中断后工作(如电话)获得音效

通过将 AVAudioPlayerDelegate 添加到我的 GameScene.h 然后添加到我的 GameScene.m,能够在中断后重新启动背景音乐

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player
{
        [_backgroundAudioPlayer pause];

}

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player
{
    [_backgroundAudioPlayer prepareToPlay];
    [_backgroundAudioPlayer play];

}

我试过添加
[[AVAudioSession sharedInstance] setActive:NO error:nil];

在 AppDelegate 和 GameScene 中都在中断开始时和 setActive:YES 时中断没有运气,中断结束后音效不产生声音

最佳答案

从各种讨论来看,这似乎是一个有时会出现的错误。简而言之,如果您遇到这些问题,并且看起来确实如此,则可以跳过SKAction playSoundFileName。并纯粹使用 AVAudioPlayer。

你必须:

  • 仅将 AVAudioPlayer 用于所有音频,因为它经过设计和测试可处理中断。
  • 使用 NSData 作为与 AVAudioPlayer 一起使用的声音容器
  • 每个声音都应该有自己的临时 AVAudioPlayer 实例,仅用于声音生命周期。

  • http://iknowsomething.com/ios-sdk-spritekit-sound/ 上有详细说明如何执行此操作

    关于ios - 处理 Sprite Kit 中的中断 - 无法通过 [SKAction playSoundFileNamed : to work after interruption 获得音效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22978547/

    相关文章:

    ios - Swift UIWebView Pdf 查看 UIActivityViewController 错误

    html - 制作音乐播放列表

    ios - AVPlayer(或 AVAudioSession?)在我离开 ViewController 后播放,当我返回时,两个正在播放

    javascript - 是否可以使用基于 Web 的编程来剪切音频文件

    ios - 使用 SKSpritenodes 和纹理

    ios - 如何快速录制带有特定阈值滤波器的音频

    iOS 使用标签栏更改 View

    python - 如何在 Kivy-iOS 上修改屏幕分辨率

    swift - 通过触摸按钮移动 SKSpriteNode

    swift - 是否可以在运行 SKAction 的过程中更改 SKNode 的位置?