2015-08-05 2 views
1

У меня есть звук в моем приложении, который запускается автоматически при появлении вида; но, как говорится в названии, мне хотелось бы, чтобы этот звук начинался с небольшой задержки, примерно через полсекунды после появления представления. Я пытался использовать PlayAtTime, но и это не работает, или я установил нечто неправильно ... Это мой код:Воспроизведение звука с небольшой задержкой

var player = AVAudioPlayer? 
override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    playAudioWithDelay() 
} 

func playAudioWithDelay() 
{ 
    let file = NSBundle.mainBundle().URLForResource("PR1", withExtension: "wav") 
    player = AVAudioPlayer(contentsOfURL: file, error: nil) 
    player!.volume = 0.5 
    player!.numberOfLoops = -1 
    player!.playAtTime(//I tried with 0.5 but doesn't work) 
    player!.prepareToPlay() 
    player!.play() 
} 

ответ

4

Вы можете попробовать использовать это:

let seconds = 1.0//Time To Delay 
let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds 
var dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 

dispatch_after(dispatchTime, dispatch_get_main_queue(), { 
    //Play Sound here 
}) 

Полный код:

func playAudioWithDelay() 
{ 
    let file = NSBundle.mainBundle().URLForResource("PR1", withExtension: "wav") 
    player = AVAudioPlayer(contentsOfURL: file, error: nil) 
    player!.volume = 0.5 
    player!.numberOfLoops = -1 
    player!.playAtTime(//I tried with 0.5 but doesn't work) 
    player!.prepareToPlay() 
    let seconds = 1.0//Time To Delay 
    let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds 
    var dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 

    dispatch_after(dispatchTime, dispatch_get_main_queue(), { 
     player!.play() 
    }) 
} 
+0

Хорошо спасибо, он отлично работает! поэтому для чего используется playAtTime? для запуска звука в данный момент времени? –

+0

Любое решение для создания задержки между повторами. – Vakas

0

Постарайся следующая функция реализована в Swift 3.0

var player: AVAudioPlayer? 

func playAudioWithDelay() 
{ 
    let file = Bundle.main.url(forResource: "PR1", withExtension: "wav") 

    do { 
     player = try AVAudioPlayer(contentsOf: file!) 
     player?.volume = 0.5 
     player?.numberOfLoops = -1 
     player?.prepareToPlay() 

    } catch let error as NSError { 
     print("error: \(error.localizedDescription)") 
    } 


    let seconds = 1.0//Time To Delay 
    let when = DispatchTime.now() + seconds 

    DispatchQueue.main.asyncAfter(deadline: when) { 
     self.play() 
    } 
} 

func play() { 
    if player?.isPlaying == false { 
     player?.play() 
    } 
} 
Смежные вопросы