2016-09-08 2 views
0

Je voudrais mesurer le temps dont un utilisateur a besoin pour effectuer une tâche, comme dans un jeu. C'est simple: Obtenez le NSDate de début et de fin, puis calculez la différence. Cependant, je ne veux pas tenir compte du temps que l'application passe en arrière-plan, comme lorsqu'un appel téléphonique arrive. Comment faire? Un NSTimer est (plus ou moins) un réveil. J'ai besoin d'un chronomètre.Comment mesurer le temps de jeu écoulé sans tenir compte du temps que l'application est en arrière-plan?

Je pourrait mettre en place un NSTimer au feu, par exemple, chaque seconde, et compter les secondes, puis annuler la minuterie lorsque l'application passe en arrière-plan et le réactiver lorsque l'application avant-plan, mais pénètre à nouveau, cela semble exagéré.

Y a-t-il une approche simple que j'ai négligée?

Répondre

0

Vous avez une boucle de jeu qui se déroulera dans n'importe quel jeu SpriteKit. Lorsque la partie est en pause, la boucle de jeu fait une pause.

Calculez donc le temps écoulé dans chaque boucle et ajoutez-le à un temps cumulé.

+0

Je n'utilise pas le kit sprite. Le "jeu" n'avance que sur l'entrée de l'utilisateur. Il y a un état "game is running" mais pas de boucle de jeu autre que la boucle d'événement plain vanilla Cocoa. –

+0

@ JoeVölker dans ce cas, vous pourriez répondre à l'application est passé à la notification en arrière-plan. Ne considérez pas le jeu comme un événement unique, mais comme une série de 1 ou plusieurs événements séparés par des choses comme arrêter le jeu en passant en arrière-plan, etc ... puis mesurer le temps pour chaque événement et les ajouter ensemble. – Fogmeister