Я создаю игру, когда пользователь правильно отвечает или время будет сделано, будет представлено предупреждение. 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()
}
}
}
Проблема была из класса SweetAlert, я установил инициализацию класса в начале моего кода. –