Ios AVAudioPlayer可以多次播放相同的声音,而不会中断播放
我有一个滚动视图。我想在每次达到1/7的时候播放一个声音。当用户缓慢滚动时,它会工作,因为声音在另一个被触发之前就结束了 但如果太快:我有两个选择:Ios AVAudioPlayer可以多次播放相同的声音,而不会中断播放,ios,swift,avaudioplayer,Ios,Swift,Avaudioplayer,我有一个滚动视图。我想在每次达到1/7的时候播放一个声音。当用户缓慢滚动时,它会工作,因为声音在另一个被触发之前就结束了 但如果太快:我有两个选择: 忽略以下应该发出的声音 停止前一个并播放以下内容 但我想要的是,即使第二个(甚至第三个、第四个等)已经开始打球,第一个也要打完 我能用一个AVAudioplayer做这个吗 var alertSound = NSBundle.mainBundle().URLForResource("Transit", withExtension: "aif")
- 忽略以下应该发出的声音
- 停止前一个并播放以下内容
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()
要实现您想要的,您需要多个AVAudioPlayers,一个玩家无法完成此任务。然而,音频工具箱框架可能会满足您的需求 基本上,您可以为您的声音创建一个系统声音ID,并在需要时随时将其发射出去。一旦启动,声音就会播放出来,不利的一面是无法控制音量,但在这种情况下,这并不重要 基本示例是(obj-C对不起)
你将需要多个玩家来实现这一点。如果是UI声音效果,最好链接AudioToolbox框架并使用AudioServicesPlaySystemSound函数。这应该达到你想要的行为。谢谢!你有一个简单的例子给我看吗。这样我就可以把你的答案标记为接受?
NSString *path=[[NSBundle mainBundle] pathForResource: @"soundName" ofType:@"aif"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath:path]), &soundID);
AudioServicesPlaySystemSound(soundID);