好吧,原来我在Spritekit中使用SKAudioNode尝试通过场景继续我的音乐,但是我被重定向到本网站上的另一个人使用AVFoundation。我并不熟悉AVFoundation框架。我想知道的是当我从scene1转换到scene2时如何继续播放音乐?音乐全部设置完毕并使用下面显示的代码。
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
答案 0 :(得分:0)
您基本上将代码放入帮助程序类(Singleton或使用静态方法),以便您可以从项目的任何位置访问/播放它。
通过这种方式,您可以集中播放音乐,让您的生活更轻松,无论您处于/转换过的场景如何,都可以播放。
例如Singleton方式(类有1个实例用于app的生命周期)
创建一个新的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中调用prepare方法
Music.sharedInstance.prepare()
设置所有玩家。
你可以在正确的位置在你的SKScene中播放它们
Music.sharedInstance.music.play()
或使用您在音乐助手类中创建的某些方法,例如
Music.sharedInstance.playGame()
我在github上有一个帮助器,以获得更详细的示例。
https://github.com/crashoverride777/Swift-MusicManager
希望这有帮助