Hey Ich weiß, es gibt bereits ein paar Posts darüber - aber ich kann immer noch keine angemessene Antwort für das Problem finden, das ich habe.timestamp und berechnende Geschwindigkeit eines Swipe
Nur neu für Kakao und iOS, ich bin gerade dabei, mein erstes iOS-Spiel zu entwickeln. In diesem Spiel möchte ich in der Lage sein, die Geschwindigkeit eines Wischens eines Benutzers zu berechnen. Ich habe keine Schwierigkeiten, den Abstand zwischen den aufeinanderfolgenden Berührungen in der Swipe-Bewegung zu finden, aber Schwierigkeiten habe, die Zeit zwischen den Berührungen
in
touchesMoved:
verstrichene Bestimmung ich tun Berechnungen mit der aktuellen Note sowie zu verfolgen die letzte zuvor aufgezeichnete Note als UITouchin
touchesEnded:
mag ich nun die Geschwindigkeit der Swipe berechnen, aber wenn ich so etwas wie:Doppelverzögerungszeit = event.timestamp - self.previousTouch.timestamp;
diese gibt immer 0 zurück
jedoch gcc Ich bin in der Lage zu sehen, dass die beiden Zeitstempel in der Tat sind nicht das gleiche. Außerdem habe ich bei der Inspektion gesehen, dass die NSTimeInterval-Werte für diese Ereignisse in der Größenordnung von ~ 10^(- 300) lagen. Das scheint seltsam, da ein NSTimeInterval Sekunden nach dem Systemstart berichten soll, oder?
Ich habe auch versucht, das NSDate der vorherigen Berührung zu verfolgen und es in Verbindung mit [NSDate timeIntervalSinceNow] zu verwenden. Dies ergab noch seltsamere Ergebnisse und ergab jedes Mal einen Wert um 6. Da timerIntervalSinceNow eine NSTimeInterval
zurückgibt, ist dieser Wert sehr merkwürdig.
Was verstehe ich nicht über Zeitstempel? Veranstaltungen? Jede Hilfe zu diesem würde sehr geschätzt werden! Vielen Dank für Ihre Zeit
einige Stützcode:
In sampleController.h:
@property(nonatomic) UITouch* previousTouch
@property(nonatomic) UITouch* currentTouch
In 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
}
iOS5 ;-) Lebensfragen hat dies Funktionalität, die in 'UIGestureRecognizer' integriert ist. –