[英]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++)
You could try one of two things: 您可以尝试以下两种方法之一:
One: Insert sleep(1)
at the beginning of your iteration of gameOrder
. 一:在
gameOrder
迭代的开始插入sleep(1)
。
Two: Modify your delay
function a bit 二:稍微修改一下
delay
功能
func delay(delay:UInt32, closure:()->()) {
sleep(delay)
closure()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.