Im пытается перебрать массив, подсвечивая один цвет за раз, и после того, как закончил цикл через каждый элемент, вызвав другую функцию для запуска. До сих пор у меня есть это: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
}
}
}
}
Но на данный момент, все это делает задержку один второй, то освещая все цвета сразу. Мне нужно, чтобы загорелся цвет в последовательном порядке, со второй задержкой между ними. Заранее спасибо!
Спасибо! Я вижу, что делает этот код, но знаете ли вы, как я могу заставить их загораться один за другим, потому что теперь все снова загорается, но выходят с разными интервалами? – JohnnyCash
Ах! Оберните подсветку = true и задержка. В зависимости от эффекта, который вы хотите, вам может понадобиться вторая переменная типа delayTime ... в зависимости от эффекта, который вы ищете. – Stripes
СПАСИБО! Это заняло у меня столько времени, чтобы понять! Спасибо за помощь! – JohnnyCash