[英]loop through array with delay - Swift
我試圖遍歷一個數組,一次點亮一種顏色,一旦遍歷每個項目,就調用另一個函數來運行。 到目前為止,我有這個:
//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
}
}
}
}
但是目前,它所做的只是延遲一秒鍾,然后立即點亮所有顏色。 我需要的是按順序點亮顏色,每個顏色之間都有第二個延遲。 提前致謝!
不要執行延遲1,將var delayTime = 1
放在循環上方,然后在循環中執行self.delay(delayTime++)
您可以嘗試以下兩種方法之一:
一:在gameOrder
迭代的開始插入sleep(1)
。
二:稍微修改一下delay
功能
func delay(delay:UInt32, closure:()->()) {
sleep(delay)
closure()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.