Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使函数在Swift中播放不同的声音_Swift_Avaudioplayer - Fatal编程技术网

如何使函数在Swift中播放不同的声音

如何使函数在Swift中播放不同的声音,swift,avaudioplayer,Swift,Avaudioplayer,我有10个不同的按钮,每个按钮都有一个独特的标签。所有按钮都链接到同一iAction。我有一个功能,可以根据与点击的特定按钮相关联的标签播放不同的声音 import AVFoundation var myAudio: AVAudioPlayer! let path = Bundle.main.path(forResource: "sound1", ofType: "wav")! let url = URL(fileURLWithPath: path) do { let sound =

我有10个不同的按钮,每个按钮都有一个独特的标签。所有按钮都链接到同一iAction。我有一个功能,可以根据与点击的特定按钮相关联的标签播放不同的声音

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 {
        //
    }
}

您只需根据
ui按钮的
标签
播放声音即可

@IBAction func playsound(_ sender: UIButton)
{
    switch sender.tag
    {
    case 0:
        //Sound for Button with tag=0
    case 1:
        //Sound for Button with tag=1
    default:
        //Default Sound
    }
}
在上述代码中,根据您的
ui按钮
标记
添加更多案例

请添加更多代码,使问题更加清晰。

喜欢吗

@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),则调用like


您的问题/问题是什么?显示您的按钮动作代码当前所有按钮播放相同的声音。我希望按钮根据单击的按钮播放不同的声音。显示您尝试过的代码,给出答案很有用我的声音播放代码写在上面。它包含在IBAction中,用于所有十个按钮。我想根据发送者按钮的标记更改“sound1”。您应该避免使用
0
标记,因为这是所有视图的默认值。player.prepareToPlay()如果我将这行代码添加到播放器上方,它将如何影响我的代码。play()@UtkarshSharma-请参阅此以获取帮助,
@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 {
        //
    }

}