Swift 4:按下按钮时如何播放声音?

时间:2018-01-10 16:44:44

标签: ios swift avfoundation

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

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

感谢。

1 个答案:

答案 0 :(得分:2)

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

创建一个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)
}