我创建了一个处理在我的应用中播放的音频的课程:
import AVFoundation
class GSAudio{
var soundFileNameURL: NSURL = NSURL()
var soundFileName = ""
var soundPlay = AVAudioPlayer()
func playSound (soundFile: String){
soundFileName = soundFile
soundFileNameURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(soundFileName, ofType: "aif", inDirectory:"Sounds")!)
do{
try soundPlay = AVAudioPlayer(contentsOfURL: soundFileNameURL)
} catch {
print("Could not play sound file!")
}
soundPlay.prepareToPlay()
soundPlay.play()
}
}
但问题是当我通过使用来自不同类的GSAudio().playSound("Start")
之类的东西来调用此代码时,声音无法播放。有人知道为什么吗?任何帮助表示赞赏。
非常感谢。
答案 0 :(得分:0)
我有AVAudioPlayer方法,当按钮单击动作然后执行以下方法时,它工作正常,但是你想调用类和方法(ex' GSAudio()。playSound(" Start&#) 34;)')来自不同的类,你创建了委托方法来调用,它的工作做得很好。
@IBAction func btnPlayAction(sender: AnyObject) {
let fileURL: NSURL = NSURL(string: previewUrl)!
let soundData = NSData(contentsOfURL: fileURL)
do {
playerVal = try AVAudioPlayer(data: soundData!)
}
catch {
print("Something bad happened. Try catching specific errors to narrow things down",error)
}
playerVal.delegate = self
playerVal.prepareToPlay()
playerVal.play()
}
希望它有用
答案 1 :(得分:0)
检查您的声音文件(URL)路径..(打印那个)和Checkout file:// 声音中是否存在主要问题ULR确定添加文件:/ / 强>
//或者使用这个
NSURL * SoundURL = [NSURL fileURLWithPath:YourFilePath];
尝试这一个让我知道我是否正确
答案 2 :(得分:0)
我在GitHub上有一个帮助你做你想做的事。最好让这个类成为一个Singleton,这样你就可以更好地控制你的音乐,而不是创建你的助手的多个实例。