我让一个AVAudioPlayer实例在视图加载时运行。从另一个ViewController,我有一个停止音乐的UISwitch。我可以从交换机接收Bool,并看到它在console中调用正确的函数,但我无法让音乐停止播放。我尝试过停止、暂停和改变音量,但都无济于事。当应用程序关闭(双击主页并向上滑动)并且关闭开关状态时,音乐将不会播放。如果您将开关打开,音乐将会播放,但不会停止。
代码:
var player:AVAudioPlayer = AVAudioPlayer()
let optionDefaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
do{
let audioPath = Bundle.main.path(forResource: "backgroundmusic", ofType: "wav")
try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
player.volume = 0.2
if optionDefaults.value(forKey: "musicOn") != nil {
let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
if musicOn == false {
print("********** Music is off **********")
player.stop()
}
else {
print("********** Music is On **********")
player.play()
}
}
} catch {
print("AVPlayer did not initialize")
}
player.numberOfLoops = -1
}*开关代码*
let optionDefaults = UserDefaults.standard
@IBOutlet weak var musicOnOff: UISwitch!
var musicOn : Bool = true
@IBAction func switchToGame(sender: UIButton) {
if musicOnOff.isOn{
musicOn = true
optionDefaults.set(musicOn, forKey: "musicOn")
}
if musicOnOff.isOn == false{
musicOn = false
optionDefaults.set(musicOn, forKey: "musicOn")
}}
override func viewDidLoad() {
super.viewDidLoad()
if optionDefaults.value(forKey: "musicOn") != nil {
let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
if musicOn == false {
musicOnOff.isOn = false
}
else{
musicOnOff.isOn = true
}
}}发布于 2017-07-02 00:32:08
你只在视图加载时播放音乐你想在切换切换时停止并播放只需调用palyOrStopMusic completes.If on切换切换操作
var player:AVAudioPlayer = AVAudioPlayer()
let optionDefaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
playOrStopMusic()
}
func playOrStopMusic(){
do{
let audioPath = Bundle.main.path(forResource: "backgroundmusic", ofType: "wav")
try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
player.volume = 0.2
if optionDefaults.value(forKey: "musicOn") != nil {
let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
if musicOn == false {
print("********** Music is off **********")
player.stop()
}
else {
print("********** Music is On **********")
player.play()
}
}
} catch {
print("AVPlayer did not initialize")
}
player.numberOfLoops = -1
}*开关代码*
let optionDefaults = UserDefaults.standard
@IBOutlet weak var musicOnOff: UISwitch!
var musicOn : Bool = true
@IBAction func switchToGame(sender: UIButton) {
if musicOnOff.isOn{
musicOn = true
optionDefaults.set(musicOn, forKey: "musicOn")
}else{
musicOn = false
optionDefaults.set(musicOn, forKey: "musicOn")
}
playOrStopMusic()
}
override func viewDidLoad() {
super.viewDidLoad()
playOrStopMusic()
}https://stackoverflow.com/questions/44852271
复制相似问题