2016-03-17 89 views
0

我有0.2秒長的聲音文件「beep.caf」,我試圖快速播放。如果我將聲音設置爲間隔1秒,他們可以很好地演奏,但如果我將它們設置爲0.8以下,只會播放第一個聲音。我也有使用AudioServicesPlaySystemSound的相同問題。AVAudioPlayer聲音不會在1秒以內播放

要播放聲音兩次迅速,我有以下功能:

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() 
    } 

我試圖在下一個pl之前停止聲音唉,但這也沒有幫助。我甚至已經複製了應該文件(嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶嗶〜),看它是否與播放同一個聲音文件有關,並且我也遇到了同樣的問題。

任何想法??

+0

是的,如何使用使用車庫樂隊創建一個更大的聲音,你玩一秒鐘。 :) – user3069232

+0

我不知道這將如何幫助。我會補充說,開始蜂鳴聲和結束蜂鳴聲之間的時間由用戶操作定義,並且可能低至0.5秒。 –

+0

也許我錯了,你確定beep.caf只有0.2秒長。你可以放入一個觸發器來檢測遊戲完成情況,並且可能將整個事件計時? – user3069232

回答

0

問題在於時間而不是玩家。延遲時間應該是在10毫秒內,但是是100秒的毫秒(.1與.01),這在嘟嘟聲之間時間很短,並且通常不會準確地發射。時間設置爲1.0秒時產生誤報。