所以我正在制作一个播放歌曲的基本音乐应用程序。在我手动擦除歌曲之前,它运行良好,但当我添加NStimer以在播放歌曲时自动擦除时,应用程序崩溃!我们将不胜感激!
var播放器:AVAudioPlayer=AVAudioPayer()@IBAction函数播放(发件人:AnyObject){player.play()}@IBOutlet var volumeSlider:UISlider!@IBAction函数adjustVolume(发送方:AnyObject){player.volume=卷Slider.value}@IBOutlet var磨砂膏:UISlider!@IBAction函数adjustScrub(发件人:AnyObject){player.currentTime=NSTimeInterval(scrub.value)}@IBAction函数暂停(发件人:AnyObject){player.pause()}@IBAction函数停止(发件人:AnyObject){player.pause()做{try-player=AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource("001 JIS GALI MEIN TERA GHAR-KATI PATANG",类型:"mp3"))}捕获{//不起作用}}重写函数视图DidLoad(){super.viewDidLoad()做{try-player=AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource("001 JIS GALI MEIN TERA GHAR-KATI PATANG",类型:"mp3"))var timer=NSTimer.scheduledTimerWithTimeInterval(0.1,目标:self,选择器:selector("updateSlider"),userInfo:nil,repeats:true)scrub.maximumValue=浮动(玩家持续时间)}捕获{//不起作用}函数updateSlider(){scrub.value=浮动(player.currentTime)}}重写函数didReceiveMemoryWarning(){super.didReceiveMemoryWarning()}}
几件事:为什么要在pause()
方法中重新定义player
?你已经在viewDidLoad()
中做到了。顺便说一句,在viewDidLoad()
中有一个函数定义,也要检查一下。
另一方面,我认为你可能会遇到另一个与你使用try的方式有关的问题。代替:
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)
希望这能帮助
您可以使用JukeBox Player来流式传输本地和远程音频文件。基本上使用AVAudioPlayer播放歌曲,但它可以帮助您管理播放、暂停、滑块跟踪、下一步、上一步等基本功能。