gpt4 book ai didi

ios - 我的 AVAudioPlayer 在快速转换场景时停止

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

好吧,最初我在 Spritekit 中使用 SKAudioNode 来尝试在场景中继续我的音乐,但是我被这个网站上的另一个人重定向到使用 AVFoundation。我对 AVFoundation 框架不太熟悉。我想知道的是当我从场景1转换到场景2时如何继续播放音乐?音乐已全部设置完毕并可使用下面所示的代码。

var Music = AVAudioPlayer()

let myFilePathString = NSBundle.mainBundle().pathForResource("Verm - Explode", ofType: "mp3")

if let myFilePathString = myFilePathString {
let myFilePathURL = NSURL(fileURLWithPath: myFilePathString)

do {

try Music = AVAudioPlayer(contentsOfURL: myFilePathURL)
Music.play()

}catch
{
print("Error")
}
}

那么如何在场景转换时继续我的歌曲呢?提前致谢。萨姆. :p

最佳答案

您基本上将代码放入辅助类(单例或静态方法)中,以便您可以从项目中的任何位置访问/播放它。

这样,您就有了一个集中的音乐播放位置,这让您的生活更轻松,而且无论您处于哪个场景/转换,它都会播放。

例如单例方式(类在应用程序的生命周期中有 1 个实例)

创建一个新的 swift 文件并添加一个与此类似的类。

class Music {

let sharedInstance = Music()

var music = AVAudioPlayer()

private init() { } // to make it a proper singleton

func prepare() {
// code to prepare your AVAudioPlayers
}

// other methods to play, stop etc
}

现在,您还可以在应用启动时设置所有音频播放器,而不是在播放时设置它们,这也有助于提高性能。

在您的 gameViewController 或 AppDelegate 中调用准备方法

 Music.sharedInstance.prepare()

设置所有玩家。

您可以在 SKScene 中的正确位置播放它们,如下所示

 Music.sharedInstance.music.play()

或者使用您在音乐助手类中创建的一些方法,例如

 Music.sharedInstance.playGame()

我在 github 上有一个帮助程序,可以获取更详细的示例。

https://github.com/crashoverride777/Swift-MusicManager

希望这有帮助

关于ios - 我的 AVAudioPlayer 在快速转换场景时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38781602/

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