聲音在遊戲中播放,但似乎無法通過AVAudioPlayer獲得任何輸出,令人頭疼。最初這是作爲一個班級設置的,但是當它不起作用時,我嘗試對聲音輸出進行硬編碼,以檢查是否存在問題。它仍然沒有工作,我嘗試了幾個不同的文件,以排除有問題的音頻文件或格式。正在檢索URL,但音頻播放器似乎只是輸出沒有聲音。通過SKAction播放聲音但不通過AVAudioPlayer
我已閱讀了一些關於類似問題的線索,並且弄清楚了系統聲音設置,但沒有任何區別。有人建議模擬器在某些情況下不能輸出聲音,但我不認爲這是這種情況。
let myFile = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("gong", ofType: "wav")!)
print ("URL data: \(myFile)")
do{
let audioPlayer = try AVAudioPlayer(contentsOfURL:myFile)
audioPlayer.prepareToPlay()
audioPlayer.play()
}catch {
print("Error playing sound")
}
然而,這起罰款:
self.runAction(SKAction.playSoundFileNamed("gong", waitForCompletion: false))
我需要AVAudioPlayer的功能我希望能夠啓動,停止和控制聲音的音量,因爲它循環。我使用XCode 7.3.1和Swift 2.2。
任何想法?
非常感謝, 千瓦
你導入AVFoundation的權利? – Pierce
是的。我想我已經解決了。我需要在AVAudioPlayer的一個範圍內創建一個實例,這個範圍是持久的,所以它不會被自動垃圾收集刪除。另外,我認爲prepareToPlay命令沒有時間在執行play命令之前將文件加載到內存中,並且播放器也超出了範圍,並且在退出調用代碼塊時幾乎立即收集它。結果:沒有機會玩。我將創建一個類,使用prepareToPlay將所有聲音預加載到init()階段的內存中,以便可以立即調用它們。謝謝 – Kwangle
這就是我想說的,我從來沒有使用'prepareToPlay'方法,並且我被告知通常沒有必要。 – Pierce