AvAudioPlayer 不工作?

Posted

技术标签:

【中文标题】AvAudioPlayer 不工作?【英文标题】:AvAudioPlayer not working? 【发布时间】:2015-05-02 12:03:08 【问题描述】:

我创建了 AVAudioPlayer 对象并在场景中播放音乐,如果我过渡到另一个场景然后返回到原始场景,它会创建另一个对象并播放相同的音轨两次。我该如何克服呢?

  NSURL *url = [[NSBundle mainBundle] URLForResource:@"backgroundMusic" withExtension:@"mp3"];
    self.backgroundMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    self.backgroundMusic.numberOfLoops = -1;
    [self.backgroundMusic prepareToPlay];



    if (self.backgroundMusic.playing == NO) 
        [self.backgroundMusic play];
    

【问题讨论】:

我对 SceneKit 不是很熟悉,但我认为一个 AVAudioPlayer 不能两次播放相同的声音 - 所以这听起来像您的代码创建了一个新的播放器实例。由于您没有显示任何代码,因此我无法再进一步。但是您可以记录 AVAudioPlayer 并查看对象是否相同(相同的内存地址)或它们是否不同。 我已将我的代码添加到我的问题中。我希望在不同场景转换时播放相同的配乐。 【参考方案1】:

你想做什么? 您只想在那个场景中播放音乐吗?那么在过渡之前,请停止 avaudioplayer。

   [audioplayer stop];

或者,也许您想在场景中开始播放音乐,然后在您离开场景或返回场景时让它继续播放?

那么你需要一个单独的包装类来保存你的音乐。创建一个类,然后调用它来播放音乐。您可以检查 .playing 属性以了解音乐是否已经在播放。

【讨论】:

[播放器停止];会更合适。 我希望它在场景中开始播放,如果我离开场景或回到它,让它继续播放。它仍然在做同样的事情并且不工作..

以上是关于AvAudioPlayer 不工作?的主要内容,如果未能解决你的问题,请参考以下文章

SKScene 中的 AVAudio 播放器出错

首次加载时 AVAudio Player 出现延迟

致命错误:使用 AVAudio 展开可选值时意外发现 nil

如何使用 AVAudioPlayer 播放单词数组或 NSString?

一次打开大量的AVAudioPlayers?

声音 AVAudioPlayer 不工作