首页 > 解决方案 > 如何让函数在 Swift 中播放不同的声音

问题描述

我有 10 个不同的按钮,每个按钮都有一个与之关联的唯一标签。所有按钮都链接到同一个 IBAction。我具有根据与单击的特定按钮关联的标签播放不同声音的功能。

import AVFoundation

var myAudio: AVAudioPlayer!

let path = Bundle.main.path(forResource: "sound1", ofType: "wav")!
let url = URL(fileURLWithPath: path)
do {
    let sound = try AVAudioPlayer(contentsOf: url)
    myAudio = sound
    sound.play()
    } catch {
        //
    }
}

标签: swiftavaudioplayer

解决方案


喜欢

@objc func yourbtnActionName(_ sender : UIButton){

    switch sender.tag {
    case 1:
        commonSoundCode(name: "sound1")
        break
    case 2:
        commonSoundCode(name: "yoursecondSoundname")
        break
    default:
        break
    }
   }

然后常用方法为

 func commonSoundCode(name: String){
    let path = Bundle.main.path(forResource: name, ofType: "wav")!
    let url = URL(fileURLWithPath: path)
    do {
        let sound = try AVAudioPlayer(contentsOf: url)
        myAudio = sound
        sound.play()
    } catch {
        //
    }
}

选项 2

如果您的声音文件是相同的序列,例如(sound1.wav,sound2.wav......,sound10.wav)然后调用

@objc func yourbtnActionName(_ sender : UIButton){
  let path = Bundle.main.path(forResource: "sound\(sender.tag)", ofType: "wav")!
    let url = URL(fileURLWithPath: path)
    do {
        let sound = try AVAudioPlayer(contentsOf: url)
        myAudio = sound
        sound.play()
    } catch {
        //
    }

}

推荐阅读