2014-10-10 108 views
1

我已經爲了創建了下面的對象類AVAudioPlayer的發揮噪音:AVAudioPlayer目標聲音不播放 - 斯威夫特

@IBAction func testSound() { 
    var sound:MusicAudio = MusicAudio() 
    sound.adjustAudioLayerState(true, layer: AudioLayerState.Bass) 

} 

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() 
     } 
    } 
} 

要播放的噪音,我通過調用類

但是我沒有收到任何音頻播放,任何人都可以發現我的執行問題?

編輯: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() 
     } 
    } 
} 

回答

4

後,因爲你的MusicAudio類被釋放你沒有得到任何聲音。你需要使var,sound,屬性,而不是局部變量。

class ViewController: UIViewController { 

    var sound = MusicAudio() 

    @IBAction func testSound() { 
     self.sound.adjustAudioLayerState(true, layer: AudioLayerState.Bass) 
    } 

} 
+0

這已經修復了這個問題,但是在我的頭上修復(見編輯問題)似乎雜亂 - 有沒有更合適的方法,我應該在斯威夫特做這個還是我多心嗎? – Ryan 2014-10-10 17:31:58

+0

@Ryan,我沒有看到任何與您最初發布內容不同的內容。更改需要在具有IBAction的視圖控制器類中。 – rdelmar 2014-10-10 17:39:43

+0

哦,我明白了!在我的編輯中,我在頂部之外移動了「var bassAudio:AVAudioPlayer!= AVAudioPlayer()」類(它也解決了問題)。我已經實現了你的意思,它現在雖然工作:) – Ryan 2014-10-10 17:50:25