相关疑难解决方法(0)

尽管在Swift中使用prepareToPlay(),AVAudioPlayer仍会产生延迟

在Swift中编写的SpriteKit iOS游戏中,播放非常短的声音(~0.5s)会产生打嗝(如滞后).在其他问题中,我读到了我应该prepareToPlay()发出的声音.

我甚至使用变量(soundReady)来检查声音是否在播放前准备好了.每当完成播放(audioPlayerDidFinishPlaying())时我也会重新准备声音.以下是代码的相关部分:

class GameScene: SKScene, AVAudioPlayerDelegate {

   var splashSound = NSURL()
   var audioPlayer = AVAudioPlayer()
   var soundReady = false

   override func didMoveToView(view: SKView) {
      let path = NSBundle.mainBundle().pathForResource("plopSound", ofType: "m4a")
      splashSound = NSURL(fileURLWithPath: path)
      audioPlayer = AVAudioPlayer(contentsOfURL: splashSound, error: nil)
      audioPlayer.delegate = self
      soundReady = audioPlayer.prepareToPlay()
   }

   func playSound(){
      if(soundReady){
         audioPlayer.play()
         soundReady = false
      }
   }

   func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool){
      //Prepare to play after Sound finished playing
      soundReady = audioPlayer.prepareToPlay()
   } …
Run Code Online (Sandbox Code Playgroud)

audio lag avaudioplayer ios swift

21
推荐指数
2
解决办法
4751
查看次数

标签 统计

audio ×1

avaudioplayer ×1

ios ×1

lag ×1

swift ×1