创建游戏时,只要用户正确回答或完成时间,就会显示警报。我正在使用GitHub的SweetAlert类。 在提醒警报之前播放声音。 我面临一个烦人的问题。当警报第一次显示时,我会一直延迟。所有其他时间都很好。
我认为问题出在声音上,我使用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()
}
}
}
答案 0 :(得分:2)
您是在模拟器或真实设备上进行测试吗?它可能只是你的设备。如果您使用的是模拟器,则可能会滞后。这发生在我的应用程序中,但它刚刚停止发生。您的代码中似乎没有任何可能导致此问题的内容。
答案 1 :(得分:2)
这个问题似乎有类似的问题......