2015-10-25 79 views
1

我一直在試圖找出一種方法來暫停我的音頻與一個按鈕(很簡單,只需點擊backgroundMusic.stop()),但它不會暫停。使用下面的代碼的想法是,它從應用程序的開始運行,但是當我再次加載場景時,它不會在前一軌道上播放。下面所有的代碼都是在每次加載場景時都打印'play',並且我得到了多個音軌互相播放,所以它似乎無法檢測到音頻是否播放。這是我第一次在xcode中使用音頻,所以我不熟悉它。我使用的Xcode 7.0.1和斯威夫特2爲什麼我的AVAudioPlayer無法檢測它是否在播放?

在我的視圖控制器類,但超出了我的viewDidLoad:

func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? { 
    //1 
    let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) 
    let url = NSURL.fileURLWithPath(path!) 

    //2 
    var audioPlayer:AVAudioPlayer? 

    // 3 
    do { 
     try audioPlayer = AVAudioPlayer(contentsOfURL: url) 
    } catch { 
     print("Player not available") 
    } 

    return audioPlayer 
} 

在我viewDidLoad中:

if let backgroundMusic = self.setupAudioPlayerWithFile("Kawai Kitsune", type:"mp3") { 
     self.backgroundMusic = backgroundMusic 
    } 
    if backgroundMusic != nil { 
     if backgroundMusic?.playing == false{ 
      backgroundMusic?.volume = 0.1 
      backgroundMusic?.play() 

      print("play") 
     } 
     else { 
      print("playing") 

     } 
    } 

回答

0

在類級別創建AVAudioPlayer對象,然後嘗試。它應該工作!

事情是這樣的:

class MyController : UIViewController { 
    var audioPlayer:AVAudioPlayer? 

    func setupAudioPlayerWithFile(file:NSString, type:NSString) { 
     //1 
     let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) 
     let url = NSURL.fileURLWithPath(path!) 

     do { 
      try audioPlayer = AVAudioPlayer(contentsOfURL: url) 
     } catch { 
      print("Player not available") 
     } 
    } 

    override func viewDidLoad() { 
     self.setupAudioPlayerWithFile("Kawai Kitsune", type:"mp3") 

     if self.audioPlayer != nil { 
      if self.audioPlayer?.playing == false { 
       self.audioPlayer?.volume = 0.1 
       self.audioPlayer?.play() 

       print("play") 
      } 
      else { 
       print("playing") 

      } 
     } 
    } 
} 
+0

非常感謝你爲你的快速反應!爲了澄清,你說我需要把我的第二代代碼放在我的viewDidLoad之外。如果是這樣,當應用程序打開時我該如何播放音頻? @Abhinav – CoolPenguin

+0

爲你工作@CoolPenguin – Abhinav

+0

真的很抱歉,我無法連接到互聯網一段時間。我嘗試了你所做的(複製和粘貼,顯然將audioplayer更改爲backgroundMusic),但它仍然只是說'播放',音頻互相播放。 @Abhinav – CoolPenguin

相關問題