2016-04-28 2 views
1

Я создаю игру, когда пользователь правильно отвечает или время будет сделано, будет представлено предупреждение. im, используя класс SweetAlert от GitHub. звук будет воспроизводиться непосредственно перед представлением оповещения. im сталкивается с раздражающей проблемой. я продолжаю получать задержку, когда предупреждение появляется в первый раз. все остальные времена прекрасны.Alert delay - iOS swift

Я думал, что проблема со звуком, я использовал prepareToPlay, и я попытался запустить звук в фоновом режиме, но все тот же.

вот мой код.

этот код, когда игра закончена

func updateTime() { 
    let shouldTimerStop = timeManager.updateTime() 
    if timeManager.time <= 30 { 
     timerLabel.textColor = UIColor.redColor() 
     SoundManager.backgroundMusicSharedInstance!.volume = 0.05 
     //if !clockSoundIsPlaying { 
     SoundManager.playClockSound() 
      //clockSoundIsPlaying = true 
     //} 
    } 
    timerLabel.text = timeManager.displayedTime(timeManager.time) 
    if shouldTimerStop { 
     SoundManager.clockSoundSharedInstance!.stop() 
     //SoundManager.backgroundMusicSharedInstance?.volume = 0.05 
     timer.invalidate() 
     timer = NSTimer() 
     /////////////////////////////////////////////////////////// 
     let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0) 
     dispatch_async(backgroundQueue, { 
      SoundManager.playGameOverSound() 
     }) 
     //////////////////////////////////////////////////////////// 
     SweetAlert().showAlert("Game Over!", subTitle: "Better luck next time!", style: AlertStyle.Error, buttonTitle:"Restart", buttonColor:UIColor(red: 56.0/255.0, green: 163.0/255.0, blue: 221.0/255.0, alpha: 1.0) , otherButtonTitle: "Main Menu", otherButtonColor: UIColor(red: 56.0/255.0, green: 163.0/255.0, blue: 221.0/255.0, alpha: 1.0)) { (isOtherButton) -> Void in 
      if isOtherButton == true { 
       self.score = 0 
       self.scoreLabel.text = "Score: \(self.score)" 
       self.timeManager.resetTimer() 
       self.resetUI() 
      } 
      else { 
       // go to main menu 
       self.performSegueWithIdentifier("backToMainMenu", sender: self) 
      } 
      SoundManager.backgroundMusicSharedInstance!.volume = 0.2 
     } 

    } 
} 

и вот код, когда ответ правильный

func correctAnswer() { 
     SoundManager.backgroundMusicSharedInstance!.volume = 0.05 
     if self.timeManager.time <= 30{ 
      SoundManager.stopClockSound() 
     } 
     let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0) 
     dispatch_async(backgroundQueue, { 
      SoundManager.playCorrectSound() 
     }) 
     self.timer.invalidate() 
     SweetAlert().showAlert("Good job!", subTitle: "You passed the level!", style: AlertStyle.Success, buttonTitle:"Continue", buttonColor:UIColor.init(red: 56/255, green: 163/255, blue: 221/255, alpha: 1)) { (isOtherButton) -> Void in 
      if isOtherButton == true { 
       self.continueWithTheGame() 

      } 
     } 

    } 
+1

Проблема была из класса SweetAlert, я установил инициализацию класса в начале моего кода. –

ответ

2

Были ли вы тестирование на тренажере или реального устройства? Это может быть ваше устройство. Если вы используете симулятор, это может быть отставание. Это случилось с моим приложением, но оно просто прекратилось. Кажется, что в вашем коде не было ничего, что могло бы вызвать эту проблему.