SpriteKit视图不会响应计时器事件而更新

时间:2017-06-27 02:39:51

标签: swift events swift3 timer sprite-kit

在我们的程序中,有一个基于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)
        ...
}

1 个答案:

答案 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)
}