在 Swift 中重复播放声音文件?

问题描述 投票:0回答:3

我使用以下代码成功地通过按下按钮来播放声音。但是,我想按一个按钮并让声音循环/无限播放。这是如何实现的?我还想实现暂停/播放功能。预先感谢。

@IBAction func keyPressed(_ sender: UIButton) {
    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 audio avaudioplayer
3个回答
13
投票

默认情况下,AVAudioPlayer从头到尾播放音频,然后停止,但我们可以通过设置其numberOfLoops属性来控制让它循环播放多少次。例如,要使音频总共播放三遍,您可以这样写:

 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

1
投票

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.