我想开发一个小应用程序。但是我试着在几天之后制作一个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”按钮时,您必须再次听到音乐。
答案 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()
}