2016-09-08 4 views
0

Я хотел бы измерить время, необходимое пользователю для выполнения задачи, например, в игре. Это просто: получите NSDate начала и конца, а затем вычислите разницу.Как измерить прошедшее время игры, не учитывая время, когда приложение находится в фоновом режиме?

Однако, я хочу игнорировать время, которое приложение проводит в фоновом режиме, например, когда приходит телефонный звонок. Как мне это сделать? NSTimer - это (более или менее) будильник. Мне нужен секундомер.

Я мог создать NSTimer огонь, скажем, каждую секунду, и отсчет секунд, затем аннулирует таймер, когда приложение переходит в фоновый режим и возобновить его, когда приложение залез на передний план, но это кажется излишним.

Есть ли простой подход, который я пропустил?

ответ

0

У вас есть игровой цикл, который будет запускаться в любой игре SpriteKit.

Когда игра приостановлена, игровой цикл приостанавливается.

Итак, рассчитайте прошедшее время в каждом цикле и добавьте в накопительное время.

+0

Я не пользуюсь комплектом спрайтов. «Игра» продвигается только при вводе пользователя. Существует состояние «игра запущено», но нет игрового цикла, отличного от обычного цикла событий какао-ванили. –

+0

@ JoeVölker в этом случае вы могли бы ответить на заявку, переместившись на фоновое уведомление. Не рассматривайте игру как одно событие, а как серию из 1 или более событий, разделенных такими вещами, как приостановка игры, перемещающейся на задний план и т. Д. ... затем измерять время для каждого события и добавлять их вместе. – Fogmeister