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