iphone-AVAudioPlayer 重叠
Posted
技术标签:
【中文标题】iphone-AVAudioPlayer 重叠【英文标题】:iphone-AVAudioPlayer Overlaps 【发布时间】:2013-12-02 18:08:30 【问题描述】:我有一个按钮,每次单击它时都会播放一个 AVAudiplayer 声音文件。该文件是一个相对较短的 .mp3 激光声音。所以,我声明了一个 AVAUdiplayer,并准备在我的代码中的 viewDidLoad 函数中播放它。那工作得很好。然后,当按钮被点击时,我写了 [audioPlayer play] 。这也很好用。问题是当我反复单击按钮时,第一次按钮单击的声音在完成之前不会中断,即使有重叠。因此,直到下一个声音完成后才会播放下一个声音。请用代码回答。
【问题讨论】:
【参考方案1】:检查它是否先播放。如果它停止它然后播放。
if (audioPlayer.rate != 0.0f) [audioPlayer stop];
[audioPlayer play];
【讨论】:
当它不播放时停止它并没有什么坏处。所以不需要先检查。 @Rookie 另外,如果我单击按钮以非常快地播放声音,那会有任何延迟吗? 什么不起作用?能否说的更清楚一些,请提供一些代码 @Rookie 这是我在视图中的代码确实加载功能:NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"/lazer" ofType:@"mp3"]]; NSError *error; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; [audioPlayer prepareToPlay];
@Rookie 然后,我使用您建议的代码在一个名为 fire 的函数中调用它。这仍然有我的重叠问题。以上是关于iphone-AVAudioPlayer 重叠的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - AVAudioPlayer、kAudioSessionCategory_AmbientSound 和 iPod 音乐
AV_SAMPLE_FMT_S16P 和 AV_SAMPLE_FMT_S16 有啥区别?