NSTimer时间间隔未正确触发

时间:2015-12-29 01:35:44

标签: swift uibutton nstimer

我有一个调用函数的NSTimer。每次调用该功能时,该功能都会闪烁一个不同的按钮。我将时间间隔设置为1秒并且重复是真的,当变量pcChoice == 10时它会停止重复,但由于某种原因,当我运行程序时它会延迟一秒然后再调用该函数很多次在彼此之后。对于用户来说,它看起来像一秒钟,然后一次闪烁许多按钮。我需要的是每个按钮一个接一个地闪烁,每个闪光之间有一秒钟。

mysql_fetch_assoc

1 个答案:

答案 0 :(得分:0)

这一行

    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("flashingButtons"), userInfo: nil, repeats: true)
由于你的for循环,

执行了10次。这为您提供了10个不同的计时器,每个计时器将在约1秒后调用flashingButtons。将该调用移出循环。您也不需要在setNeedsDisplay中拨打viewDidLoad 10次。

由于您不修改lit,因此请将其设为let而不是var。我还注意到lit中有9个元素,但是你循环了10次。 lit中的viewDidLoad数组从未使用过,与flashingButtons中的数组不同。

每次发生时,您都可以在arc4random_uniform内调用flashingButtons。或者如果你想让灯光真正洗牌,每一个都被击中一次,尝试使用GameplayKit:

let lit = [b0o,b1o,b2o,b3o,b4o,b5o,b6o,b7o,b8o]
let shuffledLit : [<lightobjects>] // whatever type of b0o, etc is

override func viewDidLoad() {
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("flashingButtons"), userInfo: nil, repeats: true)
    shuffledLit = GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(lit)
    super.viewDidLoad()

    self.view.setNeedsDisplay()
}