我是如何对音乐进行编程的?

时间:2015-03-04 16:23:09

标签: ios swift avaudiosession audio

我想开发一个小应用程序。但是我试着在几天之后制作一个Musik off Button。也许你可以帮助我。 我是这样开始的。

func MusikAN (sender: UIButton!) {
    MusikEinUndAusSchalten.setBackgroundImage(MusikEin, forState: .Normal)
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAus:", forControlEvents: .TouchUpInside)
}
func MusikAus (sender: UIButton!){
    MusikEinUndAusSchalten.setBackgroundImage(MusikAus, forState: .Normal)
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAN:", forControlEvents: .TouchUpInside)
    audioPlayer.stop()
}

我用这个功能制作音乐。

func Musik (sender: UIButton) {

    var alertsound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Blub1", ofType: "mp3")!)

    AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
    AVAudioSession.sharedInstance().setActive(true, error: nil)

    var error: NSError?
    audioPlayer = AVAudioPlayer(contentsOfURL: alertsound, error: &error)
    audioPlayer.prepareToPlay()
    audioPlayer.play()

}

但它不起作用。声音即将到来。 当您按下“MusikAus”按钮时,您必须听不到音乐,当您按下“MusikAn”按钮时,您必须再次听到音乐。

2 个答案:

答案 0 :(得分:3)

每次按下按钮(它是ADD,而不是SET)时调用addTarget是一个坏主意。与第二次点击时一样,您可以同时调用两种方法,甚至多次。因此,在添加新的或更好的设置之前调用removeTarget并使用按钮的选定状态在两种方法之间切换。 此外,MusikAN方法甚至不会在音频播放器上调用某些内容,那么在停止播放后它应该如何继续播放呢?

答案 1 :(得分:0)

我更新代码可能现在正确。

func MusikAN (sender: UIButton!) {
    MusikEinUndAusSchalten.setBackgroundImage(MusikEin, forState: .Normal)
    MusikEinUndAusSchalten.removeTarget(self, action: "MusikAn:", forControlEvents: .TouchUpInside)
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAus:", forControlEvents: .TouchUpInside)
    audioPlayer.start()
}
func MusikAus (sender: UIButton!){
    MusikEinUndAusSchalten.setBackgroundImage(MusikAus, forState: .Normal)
    MusikEinUndAusSchalten.removeTarget(self, action: "MusikAus:", forControlEvents: .TouchUpInside)
    MusikEinUndAusSchalten.addTarget(self, action: "MusikAN:", forControlEvents: .TouchUpInside)
    audioPlayer.stop()
}