2016-10-24 3 views
0

Я хочу иметь фоновую музыку в своей игре, которая закодирована в Swift 3. Я пробовал много учебников и примеров кода, но я не могу найти реализацию, которая работает в моем коде Swift 3. Лучший пример кода я мог бы найти это одна:Фоновая музыка в Swift 3

lazy var backgroundMusic: AVAudioPlayer? = { 
    guard let url = Bundle.main.url(forResource: "Music Title", withExtension: "mp3") else { 
     return nil 
    } 

    do { 
     let player = try AVAudioPlayer(contentsOf: url) 
     player.numberOfLoops = -1 
     return player 
    } catch { 
     return nil 
    } 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    backgroundMusic?.play() 
} 

Я поставил музыкальный файл в отдельную папку под названием «Resources». Я был бы очень рад, если вы сможете мне помочь!


Я изменил пробелы в имени файла с подчеркиванием, но проблема по-прежнему задана. Кстати, когда я следую перевода подсказки от Xcode я получаю этот код:

lazy var backgroundMusic: AVAudioPlayer? = { 
    guard let url = Bundle.main.url(forResource: "Mining by Moonlight", withExtension: "mp3") else { 
     return nil 
    } 

    do { 
     let player = try AVAudioPlayer(contentsOf: url) 
     player.numberOfLoops = -1 
     return player 
    } catch { 
     return nil 
    } 
}() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    backgroundMusic?.play() 
} 

После установки точки останова на lazy var backgroundMusic и заходя в коде, я достигну следующий результат из отладчика:

0x1029097d8 < +760>: movq 0x69a9 (% rip),% rcx; прямое смещение поля для TabTab.ViewController (backgroundMusic.storage в _98A37426C9C75C234890E1E239802C1D):. Swift.Optional>

+1

И когда вы используете отладчик, чтобы выполнить свой код, вы нашли .....? –

+0

Пожалуйста, не игнорируйте ошибку, которую вы кэшировали. По крайней мере, запишите его. –

+0

Когда я использую отладчик в записи функции, я получаю следующее: –

ответ

1

В быстром 3

class MusicHelper { 
static let sharedHelper = MusicHelper() 
var audioPlayer: AVAudioPlayer? 
func playBackgroundMusic() { 
    let aSound = NSURL(fileURLWithPath: Bundle.main.path(forResource: "mario", ofType: "mp3")!) 

    print(aSound) 
    do { 
     audioPlayer = try AVAudioPlayer(contentsOf:aSound as URL) 
     audioPlayer!.numberOfLoops = -1 
     audioPlayer!.prepareToPlay() 
     audioPlayer!.play() 
    } catch { 
     print("Cannot play the file") 
    } 
} 

}

и добавить в viewdidLoad MusicHelper. sharedHelper.playBackgroundMusic()