我有0.2秒长的声音文件" beep.caf"我想要快速发挥。如果我将声音设置为相隔1秒播放,它们播放得很好,但是如果我将它们设置为播放不到0.8,则只播放第一个声音。我也有使用AudioServicesPlaySystemSound的同样问题。
为了快速播放声音,我有以下功能:
func runAfterDelay(delay: NSTimeInterval, block: dispatch_block_t) {
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))
dispatch_after(time, dispatch_get_main_queue(), block)
}
我首先使用以下内容在viewDidLoad中设置声音:
let path = NSBundle.mainBundle().pathForResource("beep", ofType: "caf")!
let url = NSURL(fileURLWithPath: path)
do{
self.startBeep = try AVAudioPlayer(contentsOfURL: url)
self.startBeep.prepareToPlay()
}catch{
print("Audio didn't load")
}
然后按下按钮时,将运行以下代码:
let start_time:Double = 1.0
let end_time:Double = start_time + 0.8
runAfterDelay(start_time ) {
self.startBeep.play()
}
runAfterDelay(end_time ) {
self.startBeep.play()
}
我试图在下一场比赛前停止发声,但这也无济于事。我甚至复制了should文件(beep& beepStop),看它是否与播放相同的声音文件有关,我也遇到了同样的问题。
任何想法??
答案 0 :(得分:0)
问题在于时间而不是球员。延迟时间应该是十分之一毫秒,但是是100毫秒(.1对.01),它在哔哔声之间的时间非常短,而且往往没有准确地发射。当时间设置为1.0秒时,会创建误报。