Учитывает ли 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 или около того.