2017-09-01 54 views
0

我使用slowPlay代碼創建了一個可播放背景音樂的動作。我嘗試在按鈕停止中做相反的處理,以停止音樂。音樂不停止。我只想要一個播放音樂和停止音樂的按鈕。使用我下面的代碼。如何停止背景音(swift3)

@IBAction func play(_ sender: Any) { 
    slowPlay 
} 

@IBAction func stop(_ sender: Any) { 
    slowStop 
} 

func slowPlay() { 
    do { 
      let ap = Bundle.main.path(forResource: "slowslow", ofType: "mp3") 
      try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: ap!) as URL) 
    } catch { 
      //// 
    } 

    let session = AVAudioSession.sharedInstance() 
    do { 
      try session.setCategory(AVAudioSessionCategoryPlayback) 
    } catch { 

    } 
    player?.play() 
} 

func slowStop() { 
    do { 
      let ap = Bundle.main.path(forResource: "slowslow", ofType: "mp3") 
      try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: ap!) as URL) 
    } catch { 
      //// 
    } 

    let session = AVAudioSession.sharedInstance() 
    do { 
      try session.setCategory(AVAudioSessionCategoryPlayback) 
    } catch { 

    } 
    player?.stop() 
} 
+0

請確保您的代碼示例具有可讀性,格式化可讓您在嘗試解決問題時輕鬆一點 – RichAppz

+0

請嘗試使用單個播放器實例播放和停止媒體。 –

回答

0

如果你看看你的代碼示例你兩個遊戲創建player的新實例,並停止。

你需要創建一個類變量您的播放器,是這樣的:

var player: AVAudioPlayer? 

這將允許你停止這樣的:

func slowStop() { 
    player?.stop() 
} 
+0

如果您需要整塊代碼示例,請告訴我,我現在不在計算機上。但是你應該能夠從中解決問題。 – RichAppz

0

像打擊

玩家創建一個實例
var player: AVAudioPlayer? 

func slowPlay() { 
     do { 
      let ap = Bundle.main.path(forResource: "slowslow", ofType: "mp3") 
      self.player = try AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: ap!) as URL) 
     } catch { 
      //// 
     } 

     let session = AVAudioSession.sharedInstance() 
     do { 
      try session.setCategory(AVAudioSessionCategoryPlayback) 
     } catch { 
      //catch error here 
     } 
     self.player?.play() 
    } 

    func slowStop() { 
     self.player?.stop() 
    } 

您可以在執行前添加驗證以檢查玩家是否有效任何行動。

+0

基本上我說的代碼示例,希望山姆解決它;)這個問題是我會相信是從初學者編碼器,我的答案是指向他在正確的方向,但不是勺餵養的解決方案。我們都在那裏一次;) – RichAppz