2016-04-08 1 views
3

Im пытается получить песню для воспроизведения, когда песня заканчивается, но она не работает. это то, как я его реализации:Swift: Replay AVAudioPlayer, когда заканчивается песня

var music1 : AVAudioPlayer! = AVAudioPlayer() 


func setUpMusic(){ 

    let music1Path = NSBundle.mainBundle().pathForResource("Lost", ofType:"mp3") 


    let fileURL1 = NSURL(fileURLWithPath: music1Path!) 

    do{ 

     music1 = try AVAudioPlayer(contentsOfURL: fileURL1, fileTypeHint: nil) 

    } 

    catch{} 

    music1.play() 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameScene.replayFirstSong(_:)), name: AVPlayerItemDidPlayToEndTimeNotification, object: music1) 

} 


func replayFirstSong(note: NSNotification){ 
    print("Inside Replay first song") 
    music1.currentTime = 0 
    music1.play() 
} 

Любая идея, как я могу получить эту песню постоянно играть в цикле

ответ

1

numberOfLoops Попробуйте использовать:

Swift:

var numberOfLoops: Int 

ОБЪЕКТИВ-C

@property NSInteger numberOfLoops 

Установка в -1 будет цикл до бесконечности ...

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/#//apple_ref/occ/instp/AVAudioPlayer/numberOfLoops

+0

GOT IT! Допустим, я хочу, чтобы он был бесконечным, но если я хочу, чтобы он остановился, когда пользователь что-то сделал, как я могу заставить его остановиться. Прямо сейчас я делаю music1.stop(), но это не работает, оно просто повторяет – OriginalAlchemist

+0

@OriginalAlchemist: используйте music1.pause() и для повтора player.repeatMode = MPMovieRepeatMode.init (rawValue: 5)! –

+0

Вам понадобится IBAction (например, кнопка) или другая функция для вызова stop() - [прочитайте, что он говорит об использовании] (https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/ AVAudioPlayerClassReference/# // apple_ref/occ/instm/AVAudioPlayer/stop) с текущим временем (которое вы можете просто избавиться) –