znacznik czasu i obliczanie prędkości machnięcia

Hej, wiem, że jest już kilka postów na ten temat - ale wciąż nie mogę znaleźć odpowiedniej odpowiedzi na problem, który mam.

Po prostu nowy w kakao i iOS, jestem w trakcie opracowywania mojej pierwszej gry na iOS. W tej grze chciałbym móc obliczyć szybkość machnięcia użytkownika. Nie mam trudności ze znalezieniem odległości między kolejnymi dotknięciami w ruchu machnięcia, ale mam trudności z określeniem czasu, jaki upłynął między dotknięciami

wtouchesMoved: Wykonuję obliczenia z bieżącym dotykiem, a także śledzę ostatnio nagrany dotyk jako UITouch

wtouchesEnded: Teraz chcę obliczyć szybkość przesuwania, ale kiedy robię coś takiego:

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

to zawsze zwraca 0.

Jednak używając gcc widzę, że te dwa znaczniki czasu NIE są w rzeczywistości takie same. Dodatkowo, po sprawdzeniu zobaczyłem, że wartości NSTimeInterval dla tych zdarzeń były na poziomie ~ 10 ^ (- 300). Wydaje się to dziwne, ponieważ NSTimeInterval ma zgłaszać sekundy od momentu uruchomienia systemu, prawda?

Próbowałem także śledzić NSDate poprzedniego dotyku i używać go w połączeniu z [NSDate timeIntervalSinceNow]. Dało to jeszcze dziwniejsze wyniki, zwracając wartość około 6 za każdym razem. Ponownie, ponieważ timerIntervalSinceNow zwraca aNSTimeInterval, ta wartość jest bardzo dziwna.

Czego nie rozumiem ze znacznikami czasu? wydarzenia? Każda pomoc na ten temat byłaby bardzo mile widziana! Dziękuję za Twój czas

jakiś kod pomocniczy:

W sampleController.h:

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

W 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
}

questionAnswers(1)

yourAnswerToTheQuestion