如何解决SwiftUI 出现 AVAudioPlayer 播放多次
我正在尝试在我的应用程序上添加一个 AVAudioPlayer 用于背景音乐,我正在主屏幕上启动播放器,尝试在应用程序打开时开始播放但出现意外行为...
它播放并立即不断创建新玩家并播放这些玩家,因此同时播放数十个相同的声音
音乐的发起和播放功能
if let path = Bundle.main.path(forResource: sound,ofType: type) {
do {
backgroundPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
backgroundPlayer?.play()
} catch {
print("BACKGROUND MUSIC ERROR")
}
}
出现对函数的调用
.onAppear {
audioController.backgroundMusic(sound: "bg",type: "wav")
}
编辑:示例代码...
import SwiftUI
import AVKit
struct ContentView: View {
@ObservedObject var audioController = AudioController()
var body: some View {
Text("Hello,world!")
.onAppear {
audioController.playBackgroundMusic(sound: "bg",type: "wav")
}
}
}
class AudioController: ObservableObject {
var player: AVAudioPlayer?
func playBackgroundMusic(sound: String,type: String) {
if let path = Bundle.main.path(forResource: sound,ofType: type) {
do {
player = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
player?.play()
} catch {
print("BACKGROUND MUSIC ERROR")
}
}
}
}
解决方法
你可以试试这样的:
func playBackgroundMusic(sound: String,type: String) {
if !(player?.isPlaying ?? false) {
if let path = Bundle.main.path(forResource: sound,ofType: type) {
do {
player = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
player?.play()
} catch {
print("BACKGROUND MUSIC ERROR")
}
}
}
}
,
发现它实际上只是一个“模拟器”错误,当从 xcode 版本打开应用程序时,它会一遍又一遍地播放声音……但在关闭并重新打开应用程序后,声音按预期播放。
>版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。