Audio 如何在SwiftUI中等待音频完成?
我只想等到声音结束后再调用下一个声音… 这是我用来播放处理程序声音的Audio 如何在SwiftUI中等待音频完成?,audio,swiftui,completionhandler,Audio,Swiftui,Completionhandler,我只想等到声音结束后再调用下一个声音… 这是我用来播放处理程序声音的ConentView结构中的主要函数: func askNew(){ self.isPlaying = true playQuestion{ //1st audio askNew{ //2nd audio to play //Change the global @State to see the
ConentView结构中的主要函数:
func askNew(){
self.isPlaying = true
playQuestion{
//1st audio
askNew{
//2nd audio to play
//Change the global @State to see the result
self.isPlaying = false
}
}
}
}
播放声音的小功能。显然,他们只让我们知道音频会话是否开始,而不等待结束
// MARK: - Question
func playQuestion(finished: () -> Void) {
GSAudio.sharedInstance.playSound(sound: "question", type: "mp3", loop: false)
finished()
}
func askNewSetCurrent(finished: () -> Void){
GSAudio.sharedInstance.playSound(sound: "next_sound", type: "mp3", loop: false)
finished()
}
试着这样想
import AVFoundation
class SwiftUIViewModel: NSObject, ObservableObject {
private var avPlayer: AVAudioPlayer!
private var arrayOfAllTracks = [Track]()
// call play track from view
func playTrack() {
self.play(track: arrayOfAllTracks[0])
}
private func play(track: Track) {
self.avPlayer = try! AVAudioPlayer(contentsOf: track.url, fileTypeHint: AVFileType.mp3.rawValue)
self.avPlayer?.delegate = self
avPlayer.play()
}
private func playNext() {
let track = self.arrayOfAllTracks[1]
self.play(track: track)
}
}
extension SwiftUIViewModel: AVAudioPlayerDelegate {
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
guard flag else { return }
self.playNext()
}
}
struct Track {
let url: URL!
}
@克里斯变小了。我想不管怎样,总有人会要求展示球员的水平。