2015-06-19 67 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來播放,停止等音樂,而不是使用單例。