2017-12-02 369 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第一次,你有什么更多的想法? –