如何更改 NSTimer 上的时间间隔?
var difficulty: Double = 1.0
override func viewDidLoad() {
super.viewDidLoad()
_ = NSTimer.scheduledTimerWithTimeInterval(difficulty, target: self, selector: #selector(hideAllBtns), userInfo: nil, repeats: true)
}
我运行一个 switch 语句,每次从 hideallbuttons 调用该语句,然后更新难度。
func getDifficulty (score : Double) -> Double {
switch score {
case 0...100: return(1.0)
case 100...200: return (0.8)
case 200...300: return (0.5)
case 300...400: return (0.2)
default: return (1.0)
}
}
然而 NSTimer 继续以 1.0 秒的速度触发,我认为它在第一次运行时创建了一个副本并坚持该值,我尝试在计时器调用中创建一个变量,但这不起作用。
有没有一种简单的方法来动态调整计时器触发的速率?
这只是一个实践项目,因为我仍在学习,所以我知道可能有更好的方法来构建我正在尝试做的事情。我认为动态调整计时器对于将来的使用很有用。
你不能,一旦你启动计时器,它就会运行。
我不确定您到底需要什么,但您有两种选择:
使计时器无效,并以新的时间间隔触发一个新的计时器,您甚至可以在类中声明计时器,然后覆盖该值(在无效之后)。
将重复值设置为 false 并每次触发新的计时器。
看一下这个例子:
class ViewController: UIViewController {
var difficulty: Double = 1.0
var timer = NSTimer()
override func viewDidLoad() {
activateTimer()
}
func activateTimer(){
timer = NSTimer.scheduledTimerWithTimeInterval(difficulty, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: true)
}
func timerMethod() {
print("Timer method called")
}
func endTimer() {
timer.invalidate()
}
func increaseDifficulty() {
difficulty = 2.0
endTimer()
activateTimer()
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)