【问题标题】:How to stop background sound (swift3)如何停止背景声音(swift3)
【发布时间】:2018-02-10 16:29:06
【问题描述】:

我使用函数slowPlay 创建了一个播放背景音乐的动作。我试图在stop 中做相反的事情来停止音乐。但音乐并没有停止。

我只想有一个播放音乐和停止音乐的按钮。我正在使用代码:

@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()
}

【问题讨论】:

  • 请尝试使用单个播放器实例来播放和停止媒体。

标签: ios session swift3 avplayer audio-player


【解决方案1】:

如果您查看代码示例,您正在为播放和停止创建 player 的新实例。

您需要为您的播放器创建一个类变量,例如:

var player: AVAudioPlayer?

这将允许您像这样停止:

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

【讨论】:

  • 如果您需要整个代码示例,请告诉我,我现在不在电脑上。但你应该能够从中解决。
【解决方案2】:

为像 blow 这样的玩家创建一个实例

 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()
    }

您可以在执行任何操作之前添加验证以检查播放器是否有效。

【讨论】:

  • 基本上我在代码示例中所说的,希望 Sam 解决它;)我相信这个问题来自初学者编码器,我的回答是为他指明正确的方向,但是不要用勺子喂溶液。我们都去过一次;)
猜你喜欢
  • 1970-01-01
  • 2016-12-06
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多