2015-04-20 23 views
6

Sto lavorando a un semplice gioco a quiz e voglio aggiungere alcuni ritardi al gioco, ora quando seleziono la risposta il gioco va immediatamente alla prossima risposta ora voglio cambiare il colore del pulsante per 0,1 secondi e quindi carica la domanda successivaXcode Swift Ios App: aggiunta di ritardo

Ho provato la funzione sleep ma aggiunge solo il ritardo senza il cambio colore e non posso scegliere intervalli di tempo inferiori a un secondo perché accetta numeri interi come valore

ecco il codice

sender.backgroundColor = UIColor.greenColor() 
sleep(1) 
sender.backgroundColor = UIColor.whiteColor() 

cosa devo mettere al posto del sonno per ottenere quello che voglio?

grazie

risposta

1

È possibile utilizzare NSTimer per questo, in primo luogo di implementare NSTimer e si aggiunge il tempo di durata 1,0 secondi o che cosa mai voglia poi, passare il tempo NSTimer chiamare la sua funzione e si trasforma la domanda ad un altro

+0

stavo già usando i timer, ne ho aggiunto un altro per il cambio del colore e ha funzionato, grazie – GioB

0

Credo che si dovrebbe provare NSTimer o dispatch_after di fare queste cose: (La NSTimer potrebbe non essere così conveniente come ha bisogno di un metodo di classe utilizzato come call back selettore)

sender.backgroundColor = UIColor.greenColor() 
dispatch_after(#your time#, 
    dispatch_get_main_queue()){ 
    sender.backgroundColor = UIColor.whiteColor() 
    #load your new question logic# 
} 

PS : PerformSelector: delay: il metodo non è disponibile in Swift.

4

Se avete solo bisogno di un funzione sleep, basta usare

NSThread.sleepForTimeInterval(1) 
+0

ho provato a mettere questa linea tra le due istruzioni di cambio colore, aggiunge il ritardo ma non cambia colore – GioB

+0

Vuoi per chiarire che questo blocca il thread. Così come 'sleep()' fa. Questo non risolve il problema di GioB. – Andrej

2

usa usleep che prende un int in microsecondi. (Vale a dire 1.000.000 microsecondi è equivalente a 1 secondo) Così, per 0,1 s uso:

 // Sleep for 0.1s 
     usleep(100000) 

consiglia di utilizzare in un thread in background. Certamente non vuoi farlo sul thread principale dell'interfaccia utente!

Problemi correlati