1
我有一個應用程序與多個視圖控制器。其中一些ViewControllers的視圖是UIView
s,其他的是SKView
s。我想從第二個用戶進入遊戲開始播放音頻,並繼續播放同一曲目而不會中斷,即使從VC到另一個曲目也是如此。這可能嗎?連續音頻跨UIKit和SpriteKit場景播放
我有一個應用程序與多個視圖控制器。其中一些ViewControllers的視圖是UIView
s,其他的是SKView
s。我想從第二個用戶進入遊戲開始播放音頻,並繼續播放同一曲目而不會中斷,即使從VC到另一個曲目也是如此。這可能嗎?連續音頻跨UIKit和SpriteKit場景播放
您可以使用AVPlayer實例進行音頻播放。要循環音軌以連續播放,您必須檢查「AVPlayerItemDidPlayToEndTime」通知並重新啓動播放器。
如果你想跨多個視圖控制器播放音軌,我建議創建一個包含AVPlayer實例並控制播放的類。然後只需創建一個靜態的類實例,以便能夠在應用程序中訪問它。
import AVKit
class AudioManager {
static var sharedInstance = AudioManager()
private var player: AVPlayer?
func play() {
// TODO: Initialize AVPlayer with desired audio track & start playing
// player = AVPlayer(...)
player?.play()
// Register for the did play to end time notification to loop audio
if let item = player?.currentItem {
NotificationCenter.default.addObserver(self, selector: #selector(onPlaybackFinished), name: .AVPlayerItemDidPlayToEndTime, object: item)
}
}
@objc private func onPlaybackFinished() {
player?.seek(to: kCMTimeZero)
player?.play()
}
}
// to start playback from anywhere in your app
AudioManager.sharedInstance.play()
AVPlayer文檔:https://developer.apple.com/documentation/avfoundation/avplayer
你可以通過AppDelegate中除了我不會這麼做的運行聲音。當您使用SpriteKit開發遊戲時,您應該堅持使用一個視圖控制器。 –
@El Tomato,完全取決於應用程序,我設計了一些主要基於UIKit的應用程序,但有一個迷你遊戲存在的小窗口。現在我使用的這些公司應用程序,所以我無法將它與您的行動聯繫起來。 – Knight0fDragon