Ios Swift:在计时器中触发音效

Ios Swift:在计时器中触发音效,ios,swift,xcode,audio,avaudioplayer,Ios,Swift,Xcode,Audio,Avaudioplayer,我创建了一个超级简单的倒计时应用程序。你按下一个按钮,倒计时就开始了。最终结果如下所示: 10.0 9.999 9.998 每个整数代表一秒钟,所以你可以想象它跑得很快 当这个循环运行时,如果它发现当前值是3.0或2.0或1.0或0.0,我在其中有代码来播放声音 一切都会触发,声音也会播放,但它也会发出刺耳的声音。大约80%的时间是完美的。剩下的时间,它要么被延迟了几分之一秒,要么完全错过了。声音效果对应用程序至关重要 我已经做好了适当的准备,但这并没有改善。我当前的实现使用的是SKTAu

我创建了一个超级简单的倒计时应用程序。你按下一个按钮,倒计时就开始了。最终结果如下所示:

  • 10.0
  • 9.999
  • 9.998
每个整数代表一秒钟,所以你可以想象它跑得很快

当这个循环运行时,如果它发现当前值是3.0或2.0或1.0或0.0,我在其中有代码来播放声音

一切都会触发,声音也会播放,但它也会发出刺耳的声音。大约80%的时间是完美的。剩下的时间,它要么被延迟了几分之一秒,要么完全错过了。声音效果对应用程序至关重要

我已经做好了适当的准备,但这并没有改善。我当前的实现使用的是SKTAudio,我觉得这对于我的需求来说有点过分了


有什么建议吗?

请稍等-如果您使用双类比较两个值,您可能会发现,2.0值不是真实的2.0,而是2.0000000001。因此,2和2.0000001是不同的值,您的声音将不会播放

使用可以尝试smth。像

let checkValue: Double = 2 // your comparison value
let timerValue = 2.00000001 //for example
if (timerValue - Double(Int(timerValue))) == 0 && checkValue == timerValue {
    print("Cool")
} else {
    print("Not cool")
}
还是差不多

let checkValue: Double = 2 // your comparison value
let timerValue = 2.00000001 //for example

if timerValue == Double(Int(timerValue)) && timerValue == checkValue {
    print("Cool")
} else {
    print("Not cool")
}

发布一些代码怎么样?也许看看?