Refer to this image please!帮助!任何人都可以帮我理解这个错误。这是一个创意项目,在我的班级的这个特定功能中,我试图创建一个声音数组(.wav格式)。正在播放的每个声音都对应于来自txt文件的字母。四个不同的字母对应四种不同的声音。我的程序从txt文件中读取每个字母并识别要播放的声音。我的目标是让声音重叠,因为当它们被播放时,它们会相互切断。为了做到这一点,我的理解是,我首先需要创建一个声音数组,添加数组,让音频播放器为每个声音/字母对应的声音,在完成后删除该数组中的audioPlayer播放,然后将另一个数组添加到刚完成播放的数组,然后在播放结束后删除该数组。我必须在创建一串声音的同时完成所有这些操作。我也很难掌握数组和字符串之间的区别。
func playSound() {
let sound: [String] = ["Keys1.wav", "Keys2.wav", "Keys3.wav", "Keys4.wav"]
if let audioPath = Bundle.main.path(forResource: "Keys1", ofType: "wav") {
do {
sound = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
activeSound.delegate = self
Swift.print("Audio was loaded")
}
catch {
Swift.print("Can't read audio file")
debug(error.localizedDescription)
}
}
}
答案 0 :(得分:0)
声音是一个类型字符串数组。
forResource期待一个字符串;不是类型字符串数组
你需要发送一个像“Key1.wav”这样的字符串;不是整个阵列
答案 1 :(得分:0)
应该很简单。您需要迭代数组并分别处理每个项目。
let sounds = [ /* the contents of your array */ ]
for s in sounds {
// do stuff on s
}
答案 2 :(得分:0)
数组包含Ints(整数),字符串(引文中的文本),自定义对象(用户,汽车等)等对象
在你的代码中,Sound是一个字符串数组。要访问声音中的每个字符串:
for string in sound {
/ perform actions on the individual sound here
/ your do catch block would go here, so it would get performed for each string
}
希望帽子有帮助!