好吧我已經研究過這個,並嘗試了許多不同的方式來播放聲音時,單擊一個按鈕。斯威夫特3聲音播放
當我在swift 3中點擊一個按鈕時,如何播放聲音? 我有我的聲音一個名爲聲音文件夾中,名稱爲ClickSound.mp3
好吧我已經研究過這個,並嘗試了許多不同的方式來播放聲音時,單擊一個按鈕。斯威夫特3聲音播放
當我在swift 3中點擊一個按鈕時,如何播放聲音? 我有我的聲音一個名爲聲音文件夾中,名稱爲ClickSound.mp3
用戶低於此功能
//MARK:- PLAY SOUND
func playSound() {
let url = Bundle.main.url(forResource: "ClickSound", withExtension: "mp3")!
do {
player = try AVAudioPlayer(contentsOf: url)
guard let player = player else { return }
player.prepareToPlay()
player.play()
} catch let error as NSError {
print(error.description)
}
}
第一進口AudioToolbox 進口AVFoundation
希望工程:)
這是我的錯誤。 @Amit Rawat – shane
致命錯誤:意外發現零,同時展開一個可選值 (lldb) – shane
這是代碼func playSound(){ let url = Bundle.main.url(forResource:「ClickSound」,withExtension:「mp3」 )! 做{ 讓玩家=嘗試AVAudioPlayer(contentsOf:URL) 後衛球員==播放其他{}回報 player.prepareToPlay() player.play() }趕上讓誤差NSError { 打印(錯誤.description) } } – shane
你必須避免玩家被處置,並將其置於你的視圖控制器的屬性中
The only real catch is that you must store your player as a property or other variable that won't get destroyed straight away – if you don't, the sound will stop immediately.
var player : AVAudioPlayer?
func playSound(){
let path = Bundle.main.path(forResource: "alert", ofType:"mp3")!
let url = URL(fileURLWithPath: path)
do {
let sound = try AVAudioPlayer(contentsOf: url)
self.player = sound
sound.numberOfLoops = 1
sound.prepareToPlay()
sound.play()
} catch {
print("error loading file")
// couldn't load file :(
}
}
你對破壞財產的評論拯救了我。謝謝。 – Lengo
@LDD你非常歡迎,我很高興我可以幫助:) –
更簡單的方法做,這是把下面的代碼行中的按鈕按下的功能(注:只在精靈套件作品):
run(SKAction.playSoundFileNamed("ClickSound.mp3", waitForCompletion: false))
希望這有助於:)
您可能想要使用SwiftySound。它可以讓你玩在斯威夫特3.
Sound.play(file: "ClickSound.mp3")
這是一個老問題聽起來很容易,但它可以被提及的是,使用WAV或CAF音頻格式(而不是MP3)的簡稱聲音的推薦方式。 – Whirlwind
@Whirlwind你能解釋爲什麼嗎?實際上,我對此非常感興趣,因爲我有一個應用程序,正在使用我正在爲他們使用mp3的短音。感謝您向我指出這一點! – SRMR
@SRMR在iOS上只是谷歌關於壓縮和解壓縮格式。例如,一個wav文件沒有壓縮,意味着你會得到最好的質量,低cpu影響,但是磁盤空間消耗很大。所以這對於短音非常理想,因爲它們不佔用光盤上的太多空間。另一方面,mp3是壓縮的,所以它會保存你的磁盤空間,這意味着它會保持你的應用程序的大小很低,但它會被解壓縮爲ram,並且在解壓縮時它將佔用與未壓縮聲音相同數量的空間。此外,解壓縮對CPU有一定的影響......希望這對你有意義。 – Whirlwind