Учитывает ли deltaTime из запланированного метода время, когда CCDirector приостановлен?

У меня есть метод обновления, который называется каждый кадр. Каждое обновление добавляет свой deltaTime в переменную.

Если я приостановлю CCDirector и через некоторое время возобновлю его, будет ли deltaTime в этом запланированном методе быть массовым?

Я спрашиваю, потому что отслеживаю ошибку, когда на некоторых устройствах игрок может нажать кнопку "Домой" на устройстве iOS, а затем через некоторое время возобновить работу приложения, и переменная, содержащая их totalGameTime, все еще добавлена, как будто игра не имеет был приостановлен.

У меня сложилось впечатление, что этого не должно случиться, когда я использую планировщики cocos2d.

Код для тех, кто считает, что это нужно

//[self schedule:@selector(myUpdate:)];

float totalGameTime

-(void) myUpdate:(ccTime) dt {

    totalGameTime += (float) dt;
}

2 ответа

Решение

Я тоже это заметил, но только в выпуске. Я исправил это, добавив:

[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];

к моему -(void) applicationDidBecomeActive:(UIApplication *)application

Возможно, это ошибка в версии 2.0, так как я не помню, чтобы это происходило до этой версии.

Нет. Насколько мне известно, cocos2d сбрасывает дельта-время, если вы его приостановили или прошло какое-то большое количество времени из-за прерывания работы ОС (входящий вызов или что-то в этом роде).

Вы также можете легко проверить это, зарегистрировав дельта-время. Если необходимо, зарегистрируйте его, только если оно больше 0,1f или около того.

Другие вопросы по тегам