1
Я создал класс объекта AVAudioPlayer ниже, для того, чтобы играть шум:AVAudioPlayer Объект Звук не играет - Swift
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()
}
}
}
Чтобы играть шум, я называю класс с помощью:
@IBAction func testSound() {
var sound:MusicAudio = MusicAudio()
sound.adjustAudioLayerState(true, layer: AudioLayerState.Bass)
}
Однако я не получаю никакого звука, который воспроизводится, может ли кто-нибудь обнаружить проблему с моей реализацией?
Edit: После ответа rdelmar
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()
}
}
}
Это устранило проблему, однако исправление (см изменить в вопросе) в моей голове, кажется, грязный - есть более подходящий способ я должен делать это в Swift или я параноик? – Ryan
@Ryan, я ничего не вижу в вашем редактировании, отличном от того, что вы изначально разместили. Изменения должны быть в классе контроллера вида, где у вас есть IBAction. – rdelmar
О, я вижу !, в моем редактировании я переместил «var bassAudio: AVAudioPlayer! = AVAudioPlayer()» вне самого класса вверху (что также устранило проблему). Я реализовал то, что вы имели в виду, и теперь это работает :) – Ryan