Je souhaite arrêter cette minuterie, puis la redémarrer depuis l'endroit où je l'ai arrêtée.Arrêter et redémarrer une minuterie
secondsTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(addSeconds), userInfo: nil, repeats: true)
Ci-dessous, il a été suggéré que je ne devrais pas incrémenter un compteur dans mon gestionnaire de minuterie. Pourquoi pas?
Par exemple, en utilisant la minuterie GCD:
func countSeconds() {
secondsTimer = DispatchSource.makeTimerSource(queue: .main)
secondsTimer?.schedule(deadline: .now(), repeating: 1.0)
secondsTimer?.setEventHandler { [weak self] in
self?.addSeconds()
}
}
@objc func addSeconds() {
seconds += 1
}
func startGame() {
secondsTimer?.resume()
}
Et comment puis-je créer un compteur de secondes où je peux l'arrêter et le reprendre? Merci beaucoup –
Capturez l'heure de début ('CACurrentMediaTime()' ou 'CFAbsoluteTimeGetCurrent()') lorsque vous démarrez une minuterie et lorsque vous mettez en pause le minuteur, calculez le temps écoulé entre 'CACurrentMediaTime()' ou 'CFAbsoluteTimeGetCurrent()' et le heure de début enregistrée. – Rob
Je ne comprends pas pouvez-vous m'aider avec le code? –