AVAudioPlayer 多次播放相同的声音而不会中断

AVAudioPlayer play multiple times same sound without interrupting

我有一个滚动视图。我想在每次达到 1/7 时播放声音。当用户缓慢滚动时,它会起作用,因为声音在另一个声音被触发之前就结束了。

但如果速度太快:我有 2 个选择:

但我想要的是即使第二个(甚至第三个、第四个等)已经开始播放,第一个也能播放完。

我可以用一个 AVAudioplayer 做这个吗?

var alertSound = NSBundle.mainBundle().URLForResource("Transit", withExtension: "aif")
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)

var error:NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
audioPlayer.prepareToPlay()

要实现您想要的效果,您需要多个 AVAudioPlayer,一个播放器无法完成这项工作。然而,AudioToolbox 框架可能会满足您的要求。

基本上,您可以为您的声音创建一个系统声音 ID,并在需要时将其触发。一旦它被发射,声音就会播放,缺点是无法控制音量,但在这种情况下这无关紧要。

基本示例是(obj-C 抱歉)

    NSString *path=[[NSBundle mainBundle] pathForResource: @"soundName" ofType:@"aif"];

    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath:path]), &soundID);
    AudioServicesPlaySystemSound(soundID);