Swift Singleton SpriteKit

时间:2015-06-19 17:48:05

标签: ios swift

我为我的音乐使用单独的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()。

有人可以告诉我最喜欢的方式是什么,确切的区别是什么。非常感谢你

1 个答案:

答案 0 :(得分:1)

只是因为某人有这个问题,我最后只使用普通类“AudioPlayers”,而不仅仅是使用静态属性和类func来播放,停止等音乐,而不是使用Singleton。