我创建了一个音频播放器。我可以继续按下我的按钮,它将继续重播声音。如果当前的声音在前一个声音仍在继续时开始播放当前声音,那么当我每次重播声音时我快速按下按钮时它会切断前一个声音。如何在不停止前一声音的情况下继续重复声音?有点像分层相同的声音?
func waterDropPressed(sender: UIButton!) {
// Randomize a number for the sound
var soundRandomNumber:Int = Int(arc4random_uniform(3))
// Construct a string with the random number
var soundFile:String = insultArray[soundRandomNumber]
var insultURL = NSBundle.mainBundle().URLForResource(soundFile, withExtension:"mp3")
insultPlayer = AVAudioPlayer(contentsOfURL: insultURL, error: nil)
insultPlayer!.prepareToPlay()
insultPlayer!.play()
}
答案 0 :(得分:0)
我最近在我正在开发的应用中解决了类似的问题。我最终做的是为每个"层"创建一个不同的AVAudioPlayer。如果您知道任何时候将要播放的号码,您可以考虑为每个"层"创建一个AVAudioPlayers池。 最重要的是,这些AVAudioPlayers不能同时播放两个音频流(即使它是相同的音频流)。当我在搜索我的音频时可用AVAudioPlayer的AVAudioPlayer池我可以通过阅读播放器的playing
属性来确定这些播放器当中正在播放声音。我,基本上,抓住第一个没有播放声音并重复播放的声音。另一种选择是在需要重叠声音时动态生成新的AVAudioPlayer,但是从初始化AVAudioPlayer并播放声音到声音从设备中传出的时间引入了一点延迟。希望这很有帮助。祝你好运。