在我们的程序中,有一个基于Timer的变量,每秒一次。我们的视图更新功能在Timer滴答时或每当用户按下某个键以在应用程序中执行操作时运行。通过print语句,我们可以看到变量实际上每秒更改一次,但是当用户按下某个键时,更新仅在屏幕上可见地传播到SKLabelNode。是否有一些特殊的“刷新”功能需要被调用以在没有物理事件时将更新推送到屏幕?
func startGame() {
...
let timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerUpdate), userInfo: nil, repeats: true)
}
func timerUpdate(){
print("Before:\(mouseLife)")
mouseLife -= 1
displayNumbers2()
print(mouseLife)
}
func displayNumbers2() {
...
mouseLifeLabel.text = String(mouseLife)
...
}
答案 0 :(得分:1)
我现在不是编译器,也许某些功能有点不同......
var mouseLifeLabel: Int = 5 {
didSet {
mouseLifeLabel.text = String(mouseLife)
if mouseLifeLabel <= 0 {
//Gameover func
}
}
}
func startGame() {
...
let action = SKAction.block({[unowned self] in
self.mouseLife -= 1
})
let wait = SKAction.wait(1)
let seq = SKAction.sequance([action, wait])
let forever = SKAction.repeatForever(seq )
run(forever)
}