【发布时间】:2016-06-23 09:54:36
【问题描述】:
我正在尝试创建一个滑块,它可以根据滑块的值更改音频。因此,例如,如果滑块值为 0,则不会播放音频。如果值为 1,播放“song a”,如果值为 2,播放“song b”等。
我正在使用 AVFoundation 并创建了我的声音播放器:
var soundPlayer:AVAudioPlayer = AVAudioPlayer()
我已在我的滑块中添加了出口:
@IBOutlet weak var audioSlider: UISlider!
@IBOutlet weak var audioSliderPlay: UISlider!
定义了我的音频的文件位置:
let audioLocation = NSBundle.mainBundle().pathForResource("song a", ofType: ".mp3")
为我的播放器创建了一个 do 方法:
do {
audioSoundPlayer = try AVAudioPlayer (contentsOfURL: NSURL (fileURLWithPath: audioLocation!))
catch {
print(error)
}
并创建了我的操作:
@IBAction func audioSlider(sender: UISlider) {
if (!sender.selected) {
audioSoundPlayer.play()
audioSoundPlayer.numberOfLoops = -1
}
Now - the slider currently activates song a when any value is chosen.音频一旦开始,就无法停止。我需要添加一个 sender.value 并创建定义该值的变量并选择我要添加的其他歌曲。
请帮忙?!
Amit 问题编辑:
Amit - 我已将滑块的最大值更改为 3 以获取 3 个音频。
将以下内容添加到 IBAction 后,滑块在达到最大值后仅播放一段音频:
@IBAction func audioSlider(sender: UISlider) {
let sliderValue = (sender.value)
if sliderValue == 1 {
soundPlayer1.play()
soundPlayer1.numberOfLoops = -1
}
else if sliderValue == 2 {
soundPlayer2.play()
soundPlayer2.numberOfLoops = -1
}
else if sliderValue == 3 {
soundPlayer3.play()
soundPlayer3.numberOfLoops = -1
}
else if sliderValue == 0 {
soundPlayer1.stop()
soundPlayer2.stop()
soundPlayer3.stop()
}
}
【问题讨论】:
-
如果你想要滑块值只需使用“let value = Int(sender.value)”
-
sliderValue 你得到的是一个浮点值,它与 1.0 或 2.0 不完全匹配
标签: ios swift avfoundation volume ibaction