gpt4 book ai didi

ios - 单击 AVAudioplayer Swift Xcode 中的按钮时自动更改文件(url、路径)

转载 作者:行者123 更新时间:2023-11-29 00:05:38 25 4
gpt4 key购买 nike

每个屏幕 3 个图像,每个图像都有不同的声音文件“apple.wav”、“orange.wav”和“ball.wav”,单击时将播放。

我有 AVAudioPlayer 代码,但我正在尝试简化它,所以我没有为每张照片设置单独的函数 playSoundOrange(), playSoundofApple() , 等等

尝试使用相同的功能,但在按钮操作中输入文件名。

按钮代码:

@IBAction func OrangeButton(_ sender: UIButton) {
print("pressed OrangeButton")
playSoundFile(orange.wav) //having it like this would be ideal.
}

我正在尝试修改当前函数,因此我可以为每个按钮使用代码 playSoundFile(orange.wav),只需将参数更改为 (apple.wav) 或(球.wav)。

var player : AVAudioPlayer?
func playSoundFile(){
let path = Bundle.main.path(forResource: "*orange*", ofType:"*wav*")!
let url = URL(fileURLWithPath: path)

do {
let sound = try AVAudioPlayer(contentsOf: url)
self.player = sound
sound.numberOfLoops = 0
sound.prepareToPlay()
sound.play()
} catch {
print("error loading file")
// couldn't load file :(
}
}

非常感谢您的帮助。

最佳答案

更新您的 playSoundFile 方法以获取声音名称:

func playSoundFile(_ soundName: String) {
let url = Bundle.main.url(forResource: soundName, withExtension: "wav")!

do {
let sound = try AVAudioPlayer(contentsOf: url)
self.player = sound
sound.numberOfLoops = 0
sound.prepareToPlay()
sound.play()
} catch {
print("error loading file")
// couldn't load file :(
}
}

现在您只需要一个可用于所有三个按钮的按钮操作。

@IBAction func buttonPressed(_ sender: UIButton) {
}

将该一项操作分配给所有三个按钮。

因为每个按钮都有一个导出,将 sender 属性与每个导出进行比较以确定要使用的文件名:

@IBAction func buttonPressed(_ sender: UIButton) {
var soundName: String? = nil
if sender == orangeButton {
soundName = "orange"
} else if sender == appleButton {
soundName = "apple"
} else if sender == ballButton {
soundName = "ball"
}

if let soundName = soundName {
playSoundFile(soundName)
}
}

orangeButtonappleButtonballButton 替换为您商店的实际名称。

关于ios - 单击 AVAudioplayer Swift Xcode 中的按钮时自动更改文件(url、路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48133344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com