【问题标题】:Play a sound file on repeat in Swift?在 Swift 中重复播放声音文件?
【发布时间】:2019-11-25 11:53:54
【问题描述】:

我已经通过使用以下代码按下按钮成功播放声音。但是,我想按下一个按钮,让声音循环/无限播放。这是如何实现的?我也想实现暂停/播放功能。提前致谢。

@IBAction func keyPressed(_ sender: UIB`utton) {

            playSound(soundName: sender.currentTitle!)

    }


    func playSound(soundName: String) { //
        let url = Bundle.main.url(forResource: soundName, withExtension: "wav")
        player = try! AVAudioPlayer(contentsOf: url!)
        player.play()

    } // End of Play Sound

【问题讨论】:

    标签: ios swift xcode audio


    【解决方案1】:

    默认情况下AVAudioPlayer会从头到尾播放它的音频然后停止,但是我们可以通过设置它的numberOfLoops属性来控制让它循环的次数。例如,要让你的音频总共播放 3 次,你可以这样写:

     player.numberOfLoops = 3
    

    如果你想要无限循环然后使用

     player.numberOfLoops =  -1  
    

    例如

      func playSound(soundName: String) { //
            let url = Bundle.main.url(forResource: soundName, withExtension: "wav")
            player = try! AVAudioPlayer(contentsOf: url!)
            player.numberOfLoops =  -1 // set your count here 
            player.play()
    
        } // End of Play Sound
    

    【讨论】:

      【解决方案2】:

      你可以留住玩家。然后在播放器的完成委托回调中,再次开始播放。或者随时停止播放器,因为您保留了对它的引用。

      【讨论】:

        【解决方案3】:

        var audioPlayer: AVAudioPlayer?

            func startBackgroundMusic() {
                if let bundle = Bundle.main.path(forResource: "Guru_Nanak_Sahib_Ji", ofType: "mp3") {
                    let backgroundMusic = NSURL(fileURLWithPath: bundle)
                    do {
                        audioPlayer = try AVAudioPlayer(contentsOf:backgroundMusic as URL)
                        guard let audioPlayer = audioPlayer else { return }
                        audioPlayer.numberOfLoops = -1 // for infinite times
                        audioPlayer.prepareToPlay()
                        audioPlayer.play()
                    } catch {
                        print(error)
                    }
                }
            }
        

        【讨论】:

        • 不循环
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-25
        • 2014-12-26
        • 2014-06-13
        • 2017-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多