我正在开发一种游戏,其中图像的变化率随时间而变化。首先,图像每两秒钟改变一次,然后它会加速。
var change = 2.0
func setupGame(){
change = 2.0
changeImage()
}
func changeImage(){
timer = NSTimer.scheduledTimerWithTimeInterval(change, target: self, selector: #selector(SecondViewController.changeColors), userInfo: nil, repeats: true)
change -= 0.1
}
问题是它加速太快而且不会停止。最终,变化值变为负值。
任何使这项工作的方法?
答案 0 :(得分:4)
你忘记了两件事。
首先,每次计时器触发时都会创建一个新的重复计时器。在创建新计时器之前,您需要invalidate
旧计时器。而且既然你要更换计时器,那么<em>不希望这是一个重复计时器;您需要说false
而不是true
。
其次,如果您不希望change
变小,您需要某种条件来检查change
变小的程度,如果您不想要为了得到更快,不要减少它。