通过与延迟阵列环 - 斯威夫特 [英] loop through array with delay - Swift
本文介绍了通过与延迟阵列环 - 斯威夫特的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试着去遍历数组,每次照亮了一种颜色,而一旦其完成通过每一个项目循环,调用另一个函数来运行。到目前为止,我有这样的:
Im trying to loop through an array, lighting up one color at a time, and once its finished looping through every item, calling another function to run. So far i have this:
//Delay function from http://stackoverflow.com/questions/24034544/dispatch-after-gcd-in-swift/24318861#24318861
func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
@IBAction func computerTurn(){
if(isFirstLevel){levelLabel.text = ("Level 1"); isFirstLevel = false}
else{ level++ }
var gameOrderCopy = gameOrder
var randomNumber = Int(arc4random_uniform(4))
gameOrder.append(randomNumber)
var i = 0
for number in gameOrder{
if number == 0{
self.greenButton.highlighted = true
self.delay(1){
self.greenButton.highlighted = false
}
}
else if number == 1{
self.redButton.highlighted = true
self.delay(1){
self.redButton.highlighted = false
}
}
else if number == 2{
self.yellowButton.highlighted = true
self.delay(1){
self.yellowButton.highlighted = false
}
}
else if number == 3{
self.blueButton.highlighted = true
self.delay(1){
self.blueButton.highlighted = false
}
}
}
}
但此刻,它是所有延迟一秒,然后立刻照亮了所有的颜色。我需要的是点亮顺序的颜色,每个之间的第二延迟。在此先感谢!
But at the moment, all it does is delay one second, then lighting up all the colors at once. What i need is to light up the color in sequential order, with a second delay between each. Thanks in advance!
推荐答案
不要做延迟1,把 VAR delayTime = 1
环以上,并在循环做 self.delay(delayTime ++)
Don't do delay 1, put var delayTime = 1
above the loop, and in the loop do self.delay(delayTime++)
这篇关于通过与延迟阵列环 - 斯威夫特的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文