所以我一直在試圖BGM添加到我的應用程序,它的工作原理,但每當我切換到其他視圖,然後切換回來,它會再次層中的BGM。 我試過Google搜索,我看到其他人有同樣的問題,我在這裏卡住的唯一的一點是,我不是用Objective-C編碼,我用Swift編碼,除了整個很多泰勒·斯威夫特,我無法找到解決方案d:播放的背景音樂和切換視圖
下面是我用寫的BGM的代碼。
import UIKit
import AVFoundation
class ViewController: UIViewController {
var ButtonSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("tamborine", ofType: "wav")!)
var audioPlayer = AVAudioPlayer()
/* var Bgm = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Waiting-in-the-Woods", ofType: "mp3")!), error: nil) */
func playBgMusic(){
let musicPath = NSBundle.mainBundle().pathForResource("Waiting-in-the-Woods", ofType: "mp3")
let url = NSURL(fileURLWithPath: musicPath!)
audioPlayer = AVAudioPlayer(contentsOfURL: url, error: nil)
audioPlayer.numberOfLoops = -1
//-1為循環播放
audioPlayer.volume = 1
audioPlayer.prepareToPlay()
audioPlayer.play()
}
override func viewDidLoad() {
super.viewDidLoad()
audioPlayer = AVAudioPlayer(contentsOfURL: ButtonSound, error: nil)
//Bgm.play()
}
override func viewWillAppear(animated: Bool) {
playBgMusic()
if !audioPlayer.playing {
audioPlayer.play()
}
}
謝謝,我發現我的其他按鈕聽起來audioPlayer被命名爲與我的bgm相同,問題解決後給他們新的名字。 我還有一個問題,我想爲設置頁面創建一個新視圖,關閉bgm和其他聲音,但是我後來意識到我無法從原始頁面調用其他函數和屬性聲音編碼,無論如何,我可以稱他們在一個新的觀點?或者我必須將開關置於與聲音相同的視圖上?謝謝一堆。 :D – Esther
或者我應該單獨發佈另一個問題嗎? :O – Esther
您可以發佈通知並在擁有播放器的控制器上收聽。假設控制器至少未被釋放。 – Dare