timestamp e velocidade de cálculo de um furto
Ei, eu sei que já existem alguns posts sobre isso - mas ainda não consigo encontrar uma resposta adequada para o problema que estou tendo.
Apenas novo no cacau e no iOS, estou no meio do desenvolvimento do meu primeiro jogo para iOS. Neste jogo eu gostaria de poder calcular a velocidade do furto de um usuário. Não tenho dificuldade em encontrar a distância entre os toques sucessivos no movimento do furto, mas estou tendo dificuldade em determinar o tempo decorrido entre os toques
emtouchesMoved:
Eu faço cálculos com o toque atual e acompanho o último toque gravado anteriormente como um UITouch
emtouchesEnded:
Agora quero calcular a velocidade do furto, mas quando faço algo como:
double timeDelay = event.timestamp - self.previousTouch.timestamp;
isso sempre retorna 0.
No entanto, usando o gcc, sou capaz de ver que os dois timestamps não são de fato os mesmos. Além disso, ao inspecionar, vi que os valores NSTimeInterval para esses eventos estavam na magnitude de ~ 10 ^ (- 300). Isso parece estranho, já que um NSTimeInterval deve informar segundos desde o início do sistema, não é?
Eu também tentei acompanhar o NSDate do toque anterior e usá-lo com conjunção com [NSDate timeIntervalSinceNow]. Isso produziu resultados ainda mais estranhos, retornando um valor em torno de 6 a cada vez. Mais uma vez, desde timerIntervalSinceNow retorna umNSTimeInterval
, esse valor é muito estranho.
O que eu não entendo sobre timestamps? eventos? Qualquer ajuda neste assunto seria altamente apreciada! Obrigado pelo seu tempo
algum código de suporte:
Em sampleController.h:
@property(nonatomic) UITouch* previousTouch
@property(nonatomic) UITouch* currentTouch
Em 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
}