Swift 4:如何在按下按钮时让声音自动播放?

Swift 4: How to have a sound play over itself when a button is pushed?

所以我现在的情况是,每当我按下一个按钮,声音就会从头重新开始,并切断已经播放的声音。我想要的是当我按下按钮时声音自己播放,所以如果我在第一次按下后立即按下第二次,第二个声音会在第一个声音上播放而不是切断它。如果您需要澄清我需要什么,请告诉我。到目前为止,这是我的代码:

 @IBAction func bull(_ sender: Any) {
    let url = Bundle.main.url(forResource: "Bull", withExtension: "mp3")!

    do
    {
        player = try AVAudioPlayer(contentsOf: url)

        guard let player = player else { return }

        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)

        player.prepareToPlay()
        player.play()
    }

    catch let error
    {
        print(error.localizedDescription)
    }
}

谢谢。

一个玩家一次只能播放一种声音。您可能必须执行以下操作

创建一个数组 players

var arrPlayer: [AVAudioPlayer] = []

然后在您的方法中执行以下操作

let url = Bundle.main.url(forResource: "Bull", withExtension: "mp3")!

do
{
    player = try AVAudioPlayer(contentsOf: url)

    arrPlayer.append(player)

    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
    try AVAudioSession.sharedInstance().setActive(true)

    arrPlayer.last?.prepareToPlay()
    arrPlayer.last?.play()
}

catch let error
{
    print(error.localizedDescription)
}