我为我的音乐使用单独的swift文件,它看起来像这样
import AVFoundation
var menuMusic = AVAudioPlayer()
// Menu Music
func playMenuMusic() {
var menuMusicURL = NSBundle.mainBundle().URLForResource("MenuBackground", withExtension: "mp3")
menuMusic = AVAudioPlayer(contentsOfURL: menuMusicURL, error: nil)
menuMusic.numberOfLoops = -1
menuMusic.prepareToPlay()
menuMusic.play()
}
// Pause
func pauseMenuMusic() {
menuMusic.pause()
}
我可以在我的项目中的任何地方调用它的函数,比如GameScene.swift,编写pauseMenuMusic()
现在我看到人们以单身方式做这件事,所以看起来像这样
import AVFoundation
class Audio: NSObject {
var menuMusic = AVAudioPlayer()
static let shareInstance = Audio() // with swift 1.2 no need for struct and class var anymore
// Play Menu Music
func playMenuMusic() {
var menuMusicURL = NSBundle.mainBundle().URLForResource("MenuBackground", withExtension: "mp3")
menuMusic = AVAudioPlayer(contentsOfURL: menuMusicURL, error: nil)
menuMusic.numberOfLoops = -1
menuMusic.prepareToPlay()
menuMusic.play()
}
// Pause
func pauseMenuMusic() {
menuMusic.pause()
}
要从任何地方调用函数,现在它将是Audio.shareInstance.pauseMenuMusic()。
有人可以告诉我最喜欢的方式是什么,确切的区别是什么。非常感谢你
答案 0 :(得分:1)
只是因为某人有这个问题,我最后只使用普通类“AudioPlayers”,而不仅仅是使用静态属性和类func来播放,停止等音乐,而不是使用Singleton。