Je veux créer un compte à rebours simple pour mon jeu, lorsque le jeu démarre, je veux que cette fonction soit appelée à chaque seconde:
fun minusOneSecond(){
if secondsLeft > 0{
secondsLeft -= 1
seconds_thegame.text = secondsLeft.toString()
}
}
J'ai essayé ceci:
var secondsLeft = 15
timer.scheduleAtFixedRate(
object : TimerTask() {
override fun run() {
minusOneSecond()
}
},0, 1000
) // 1000 Millisecond = 1 second
Mais l'application s'arrête malheureusement, la deuxième fois que la fonction d'exécution est appelée
Je viens de commencer avec Android et Kotlin il y a 3 semaines et jusqu'à présent, je comprends le mieux.
Avec Swift dans Xcode j'utilise cette ligne et je pensais que quelque chose de similaire fonctionnerait avec Kotlin
setTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(minusOneSecond), userInfo: nil, repeats: true)
J'appelle ma fonction à chaque seconde comme ça
val handler = Handler()
handler.postDelayed(object : Runnable {
override fun run() {
//Call your function here
handler.postDelayed(this, 1000)//1 sec delay
}
}, 0)