AVAudioPlayer对象声音不玩 - 斯威夫特 [英] AVAudioPlayer Object Sound Not Playing - Swift
本文介绍了AVAudioPlayer对象声音不玩 - 斯威夫特的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经为了起到隔音创建的对象类AVAudioPlayer的如下:
类MusicAudio:NSObject的,AVAudioPlayerDelegate { VAR bassAudio:AVAudioPlayer! = AVAudioPlayer() 重载的init(){
super.init()
让bassAudioPath = NSBundle.mainBundle()pathForResource(原始,ofType:MP3)。 让fileURL = NSURL(fileURLWithPath:bassAudioPath)
bassAudio = AVAudioPlayer(contentsOfURL:fileURL,错误:无)
bassAudio.currentTime = 0
bassAudio.volume = 1.0
bassAudio.delegate =自
} FUNC adjustAudioLayerState(volumeOn:BOOL,层:AudioLayerState){ 如果层== {AudioLayerState.Bass
self.bassAudio。prepareToPlay()
self.bassAudio.play()
}
}
}
要播放的声音,我通过调用类的:
@IBAction FUNC testSound(){
VAR的声音:MusicAudio = MusicAudio()
sound.adjustAudioLayerState(真,层:AudioLayerState.Bass)}
不过我没有得到任何音频播放,任何人都可以当场与我的执行有问题?
编辑:rdelmar答案后
VAR bassAudio:AVAudioPlayer! = AVAudioPlayer()类MusicAudio:NSObject的,AVAudioPlayerDelegate { 重载的init(){
super.init()
让bassAudioPath = NSBundle.mainBundle()pathForResource(原始,ofType:MP3)。 让fileURL = NSURL(fileURLWithPath:bassAudioPath)
bassAudio = AVAudioPlayer(contentsOfURL:fileURL,错误:无)
bassAudio.currentTime = 0
bassAudio.volume = 1.0
bassAudio.delegate =自
} FUNC adjustAudioLayerState(volumeOn:BOOL,层:AudioLayerState){ 如果层== {AudioLayerState.Bass
self.bassAudio。prepareToPlay()
self.bassAudio.play()
}
}
}
解决方案
由于您的MusicAudio类被释放你没有得到任何声音。你需要做的VAR,声音,一个属性,而不是一个局部变量。
类的ViewController:UIViewController的{ VAR声音= MusicAudio() @IBAction FUNC testSound(){
self.sound.adjustAudioLayerState(真,层:AudioLayerState.Bass)
}}
I have created an object class of AVAudioPlayer below in order to play a noise:
class MusicAudio: NSObject, AVAudioPlayerDelegate {
var bassAudio : AVAudioPlayer! = AVAudioPlayer()
override init() {
super.init()
let bassAudioPath = NSBundle.mainBundle().pathForResource("Raw", ofType:"mp3")
let fileURL = NSURL(fileURLWithPath: bassAudioPath!)
bassAudio = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
bassAudio.currentTime = 0
bassAudio.volume = 1.0
bassAudio.delegate = self
}
func adjustAudioLayerState(volumeOn:Bool, layer:AudioLayerState) {
if layer == AudioLayerState.Bass {
self.bassAudio.prepareToPlay()
self.bassAudio.play()
}
}
}
To play the noise, I call the class via:
@IBAction func testSound() {
var sound:MusicAudio = MusicAudio()
sound.adjustAudioLayerState(true, layer: AudioLayerState.Bass)
}
However I am not getting any audio played back, can anyone spot a problem with my implementation?
Edit: After rdelmar answer
var bassAudio : AVAudioPlayer! = AVAudioPlayer()
class MusicAudio: NSObject, AVAudioPlayerDelegate {
override init() {
super.init()
let bassAudioPath = NSBundle.mainBundle().pathForResource("Raw", ofType:"mp3")
let fileURL = NSURL(fileURLWithPath: bassAudioPath!)
bassAudio = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
bassAudio.currentTime = 0
bassAudio.volume = 1.0
bassAudio.delegate = self
}
func adjustAudioLayerState(volumeOn:Bool, layer:AudioLayerState) {
if layer == AudioLayerState.Bass {
self.bassAudio.prepareToPlay()
self.bassAudio.play()
}
}
}
解决方案
You don't get any sound because your MusicAudio class is being deallocated. You need to make the var, sound, a property, not a local variable.
class ViewController: UIViewController {
var sound = MusicAudio()
@IBAction func testSound() {
self.sound.adjustAudioLayerState(true, layer: AudioLayerState.Bass)
}
}
这篇关于AVAudioPlayer对象声音不玩 - 斯威夫特的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文