2014-10-10 4 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() 
     } 
    } 
} 

소음을 재생하려면를, 나는 통해 클래스를 호출

그러나 오디오를 재생하지 못하고 구현에 문제가있는 사람이 있습니까?

편집 : 당신의 MusicAudio 클래스가 해제되고 있기 때문에 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

후 당신은 어떤 소리를하지 않습니다. 로컬 변수가 아닌 var, sound, property를 만들어야합니다.

class ViewController: UIViewController { 

    var sound = MusicAudio() 

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

} 
+0

문제가 수정되었지만 문제가 수정되었습니다 (문제의 편집 참조). 지저분 해 보이는군요. 스위프트에서이 작업을 수행해야하거나 편집증을 앓고 있어야합니다. – Ryan

+0

@ 라이언, 내가 편집 한 내용에서 원래 게시 한 내용과 다른 내용은 표시되지 않습니다. 변경 사항은 IBAction이있는보기 컨트롤러 클래스에 있어야합니다. – rdelmar

+0

오, 알았어!, 내 편집에서 나는 "var bassAudio : AVAudioPlayer! = AVAudioPlayer()"(상단의 클래스 자체 외부에서) 문제를 해결했습니다. 나는 당신이 의미하는 것을 구현했고 그것은 지금도 작동합니다 :) – Ryan