我制作了音频播放器。我实现播放列表和播放音频背景功能。我需要识别在后台播放的音频。
Firts我创建音频播放器对象,如:
var mp3Player:AVAudioPlayer?=AVAudioPlayer()
var firstLoad=true
var playingType_Index=0
var speedType_Index=0
当我点击列表中的音频时,我将点击的音频添加到我的selectedAudio
let audios=[
[
"image":UIImage.fontAwesomeIconWithName(.Headphones, textColor: UIColor(colorLiteralRed: 223/255, green: 156/255, blue: 104/255, alpha: 1.0), size: CGSizeMake(35, 35)),
"title": "Audio1",
"desc":"Erkemin",
"time":3,
"src":NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("audio1", ofType: "mp3")!)
]
]
var selectedAudio=[
"id":"",
"status":"",
"image":"",
"title": "",
"desc":"",
"time":0,
"src":""
]
func playAudio(sender:AnyObject){
firstLoad=false
backwardBtn.enabled=true
step_backward.enabled=true
play_pauseBtn.enabled=true
stopBtn.enabled=true
step_forward.enabled=true
forwardBtn.enabled=true
audioSlider.enabled=true
selectedAudio=audios[sender.tag]
selectedAudio["id"]=sender.tag
selectedAudio["status"]="true"
music()
tableView.reloadData()
}
我使用selectedAUdio
来识别现在播放的音频。但是当转到其他视图时,我的音频会继续播放,但我选择的音频为零。
我该怎么做?
答案 0 :(得分:0)
我认为您可能会遇到一些问题,例如重新创建此视图:如果您启动此视图并playAudio()
,则selectAudio
属性会填充您的参数,但出于某种原因,您似乎需要重新制作此视图使您的selectedAudio返回默认值(空字符串)。
如果您需要使用方法stop
停止播放,您可以执行以下代码:
func stopMp3Player() {
if let player = mp3Player {
if player.playing {
player.stop()
}
}
}
警告:当您构建此方法时(您也可以暂停),您应该始终检查您的mp3Player是否为零以避免崩溃。
关于你的游戏方法我会做类似的事情:
func playMp3Player(filename: String) {
let url = NSBundle.mainBundle().URLForResource(filename, withExtension: nil)
if (url == nil) {
print("Could not find file: \(filename)")
return
}
do { mp3Player = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil) }
catch let error as NSError { print(error.description) }
if let player = mp3Player {
player.volume = // set your volume here
player.numberOfLoops = 0 // set the repeating
player.prepareToPlay()
player.play()
}
}