我试图让倒数计时器停止并在计时器达到0时在视图控制器上显示游戏。它倒计时.1。问题是,当计时器为2.0时,它会停止并在屏幕上显示游戏。我不知道为什么会这样,因为' if'声明代码说if seconds & milliseconds == 0
应该有效,并在倒计时到达0时在屏幕上显示游戏。
var timer = Timer()
var seconds = 2
var milliseconds = 0
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(SecondViewController.countDownfunction), userInfo: nil, repeats: true)
func countDownfunction() {
time.text = "Time: " + "\(seconds).\(milliseconds)"
if milliseconds == 0 {
seconds -= 1
milliseconds = 10
} else {
milliseconds -= 1
}
if seconds & milliseconds == 0 {
timer.invalidate()
performSegue(withIdentifier: "showGameOver", sender: self)
}
}
答案 0 :(得分:1)
将if seconds & milliseconds == 0 {
更改为:
if seconds == 0 && milliseconds == 0 {
单&
是一个按位AND运算符:link
在1和10上执行按位AND计算:0001& 1010 = 0并将结果与0进行比较,因此在这种情况下调用if子句。
编辑:改变条件以适应&&操作者...
答案 1 :(得分:1)
这是因为代码正在评估秒和时间。首先是毫秒,得到一个假的答案,它等于0,所以它返回true并显示游戏结束。 相反,
if(seconds == 0 && milliseconds == 0)
{
}