gpt4 book ai didi

ios - 在后台播放音乐并切换 View

转载 作者:行者123 更新时间:2023-11-30 13:29:22 25 4
gpt4 key购买 nike

所以我一直在尝试将 BGM 添加到我的应用程序中,它有效,但每当我切换到另一个 View 然后再切换回来时,它都会再次对 BGM 进行分层。我尝试过谷歌搜索,发现其他人也有同样的问题,我被困在这里的唯一一点是我不是用 Objective-C 编码,而是用 Swift 编码,除了一大堆 Taylor Swift 之外,我找不到解决方案 D:

以下是我用来编写BGM的代码。

import UIKit
import AVFoundation

class ViewController: UIViewController {

var ButtonSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("tamborine", ofType: "wav")!)
var audioPlayer = AVAudioPlayer()

/* var Bgm = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Waiting-in-the-Woods", ofType: "mp3")!), error: nil) */

func playBgMusic(){
let musicPath = NSBundle.mainBundle().pathForResource("Waiting-in-the-Woods", ofType: "mp3")
let url = NSURL(fileURLWithPath: musicPath!)
audioPlayer = AVAudioPlayer(contentsOfURL: url, error: nil)
audioPlayer.numberOfLoops = -1
//-1為循環播放
audioPlayer.volume = 1
audioPlayer.prepareToPlay()
audioPlayer.play()


}


override func viewDidLoad() {
super.viewDidLoad()

audioPlayer = AVAudioPlayer(contentsOfURL: ButtonSound, error: nil)

//Bgm.play()
}

override func viewWillAppear(animated: Bool) {

playBgMusic()
if !audioPlayer.playing {
audioPlayer.play()
}
}

最佳答案

在 viewWillAppear 中,您调用 playBgMusic(),后者又调用 audioPlayer.play()

因此,轨道重新开始这一事实是有道理的,因为这就是您要求它执行的操作。我认为您需要的逻辑类似于以下内容。

if !audioPlayer.playing {
playBgMusic()
}

或者如果你喜欢保护声明

guard player.playing else {
playBgMusic()
}

关于ios - 在后台播放音乐并切换 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36745723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com