2015-06-19 68 views
0

我用我的音乐单独的迅速文件,它看起来像这样斯威夫特辛格尔顿SpriteKit

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

只要有人有这个问题,我只是最终使用一个普通的类“AudioPlayers”,而不是使用静态属性和类func来播放,停止等音乐,而不是使用单例。