所以我正在制作一首播放歌曲的基本音乐应用。它工作正常,直到我手动擦洗歌曲,但当我添加NStimer自动擦除它与播放的歌曲,应用程序崩溃!帮助将不胜感激!
var player:AVAudioPlayer = AVAudioPlayer() @IBAction func play(sender: AnyObject) { player.play() } @IBOutlet var volumeSlider: UISlider! @IBAction func adjustVolume(sender: AnyObject) { player.volume = volumeSlider.value } @IBOutlet var scrub: UISlider! @IBAction func adjustScrub(sender: AnyObject) { player.currentTime = NSTimeInterval(scrub.value) } @IBAction func pause(sender: AnyObject) { player.pause() } @IBAction func stop(sender: AnyObject) { player.pause() do { try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("001 JIS GALI MEIN TERA GHAR - KATI PATANG", ofType: "mp3")!)) }catch{ //didnt work } } override func viewDidLoad() { super.viewDidLoad() do { try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("001 JIS GALI MEIN TERA GHAR - KATI PATANG", ofType: "mp3")!)) var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("updateSlider"), userInfo: nil, repeats: true) scrub.maximumValue = Float(player.duration) }catch{ //didnt work } func updateSlider() { scrub.value = Float(player.currentTime) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
答案 0 :(得分:0)
很少:为什么要在player
方法中重新定义pause()
?你已经在viewDidLoad()
中做到了。顺便说一句,你在viewDidLoad()
里面有一个函数定义,也检查一下。
另一方面,我认为您可能会遇到与您尝试使用方式相关的其他问题。而不是:
do {
try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("001 JIS GALI MEIN TERA GHAR - KATI PATANG", ofType: "mp3")!))
var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("updateSlider"), userInfo: nil, repeats: true)
scrub.maximumValue = Float(player.duration)
}catch{
//didnt work
}
你必须像
一样使用它do {
player = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("001 JIS GALI MEIN TERA GHAR - KATI PATANG", ofType: "mp3")!))
var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("updateSlider"), userInfo: nil, repeats: true)
scrub.maximumValue = Float(player.duration)
} catch let error as NSError {
print(error)
}
或者,如果您不想使用整个do - try - catch
结构,则可以使用关键字try!
。然后你的代码将如下所示:
player = try! AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("001 JIS GALI MEIN TERA GHAR - KATI PATANG", ofType: "mp3")!))
var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("updateSlider"), userInfo: nil, repeats: true)
scrub.maximumValue = Float(player.duration)
希望这有帮助
答案 1 :(得分:0)
您可以使用JukeBox播放器来传输本地和远程音频文件。它基本上使用AVAudioPlayer播放歌曲,但它可以帮助您管理基本功能,如播放,暂停,滑块跟踪,下一个,上一个。