2017-12-02 371 views
0

是否有可能發揮時,圖像-5被稱爲在下面的圖像陣列如何使用Swift 3.0播放附加到Image Array的聲音?

下面是完整的代碼,包括建立AVAudioPlayer

ImageArray和你建議的代碼聲音:

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    var player:AVAudioPlayer = AVAudioPlayer() 

    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad()  

    var imagesName = ["Image-1.png","Image-2.png","Image-3.png","Image-4.png","Image-5.png","Image-6.png","Image-7.png","Image-8.png","Image-9.png","Image-10.png"] 

      var images = [UIImage]() 

      for i in 0..<imagesName.count{ 

       images.append(UIImage(named: imagesName[i])!) 

      } 

      imageView.animationImages = images 
      imageView.animationDuration = 0.5 
      imageView.animationRepeatCount = 1 
      imageView.startAnimating() 

      do 
    { 
     let audioPath = Bundle.main.path(forResource: "song", ofType: "mp3") 
     try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL) 
    } 
    catch 
    { 
     //ERROR 
    } 

    let whichImage: Int = 5 
    let when = DispatchTime.now() + imageView.animationDuration * TimeInterval(whichImage-1) 
    DispatchQueue.main.asyncAfter(deadline: when) { 
     self.player.play() 
     // Play sound here 
    } 

回答

0

正如你間隔是固定的,你還挺已經知道當圖像-5將被解僱,那麼試試這個:

let whichImage: Int = 5 
let when = DispatchTime.now() + imageView.animationDuration * TimeInterval(whichImage-1) 
DispatchQueue.main.asyncAfter(deadline: when) { 
    // Play sound here 
} 
+0

嗨 - 感謝FO請幫忙。我已經更新了完整的代碼上面的,但是在顯示圖片-5 Song.mp3的不火 - 這將觸發動畫您使用的每幅圖像0.5秒所以延遲應爲2.5秒完成 –

+0

幾秒鐘後,不是5秒。然而聲音播放開始可能與顯示圖像不完全同步。 –

+0

喜魯斯蘭Serebriakov - 我已經嘗試了您的推薦代碼(請參見上文),但它看起來像有2-3秒的延遲,你播放音頻文件與AVAudioPlayer第一次,你有什麼更多的想法? –