отметка времени и расчет скорости пролистывания

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

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

in touchesMoved: I do calculations with the current touch as well as keep track of the last previously recorded touch as a UITouch

in touchesEnded: I now want to calculate the speed of swipe, but when I do something like:

double timeDelay = event.timestamp - self.previousTouch.timestamp;

это всегда возвращает 0.

Однако, используя gcc, я могу видеть, что две метки времени на самом деле НЕ одинаковы. Кроме того, после проверки я увидел, что значения NSTimeInterval для этих событий были на уровне ~ 10 ^ (- 300). Это кажется странным, так как NSTimeInterval должен сообщать о секундах с момента запуска системы, не так ли?

Я также пытался отслеживать NSDate предыдущего касания и использовать его вместе с [NSDate timeIntervalSinceNow]. Это дало еще более странные результаты, возвращая значение около 6 каждый раз. Опять же, так как timerIntervalSinceNow возвращаетNSTimeIntervalэто значение очень странное.

Что я не понимаю о метках времени? События? Любая помощь по этому вопросу будет принята с благодарностью! Спасибо за ваше время

некоторый поддерживающий код:

В sampleController.h:

@property(nonatomic) UITouch* previousTouch
@property(nonatomic) UITouch* currentTouch

В sampleController.m:

@synthesize previousTouch = _previousTouch, currentTouch = _currentTouch;
...
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
       self.currentTouch = [[event allTouches] anyObject];
       // do stuff with currentTouch
}
...
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
       self.previousTouch = self.currentTouch;
       self.currentTouch = [[event allTouches] anyObject];
       // do stuff with currentTouch
}
...
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
       float distanceMoved = [self.touch locationInView:self.playView].x - 
              [self.touch previousLocationInView:self.playView].x;
       // attempt 1
       double timeElapsed = self.currentTouch.timestamp - self.previousTouch.timestamp;

       // attempt 2
       double timeElapsed = event.timestamp - self.previousTouch.timestamp;

       // do stuff with distanceMoved and timeDelay
}

Ответы на вопрос(1)

Ваш ответ на вопрос