こんにちは私はこのことについて既にいくつかの記事があることを知っています - しかし私はまだ私が持っている問題に対して適切な答えを見つけることができません。スワイプのタイムスタンプと計算速度
私は初めてのiOSゲームを開発する途中です。ココアとiOSの新機能です。このゲームでは、ユーザーのスワイプの速度を計算できるようにしたいと考えています。私は、スワイプ動作で連続タッチの間の距離を見つける何の難しさを持っていないんだけど、touchesMoved:
に
タッチの間の経過時間を決定する難しさを持っています私は、現在のタッチで計算を行うだけでなく、を追跡
touchesEnded:
でUITouchとして最後に、以前に記録したタッチ私は今、スワイプの速度を計算したいが、私のような何かを行うとき:
ダブルtimeDelay = event.timestamp - self.previousTouch.timestampを。
これは常に私は2つのタイムスタンプは、実際には同じではないことを見ることができるよGCCを使用して、しかし、0
を返します。さらに、検査すると、これらのイベントのNSTimeInterval値が〜10 ^( - 300)の大きさであることがわかりました。これは、NSTimeIntervalがシステムの起動から数秒を報告することになっているので、奇妙に思えるでしょうか?
また、以前のタッチのNSDateを記録しておき、[NSDate timeIntervalSinceNow]と組み合わせて使用しました。これにより、毎回6回程度の価値が返ってきました。繰り返しますが、timerIntervalSinceNowはNSTimeInterval
を返します。この値は非常に奇妙です。
私はタイムスタンプについて何を理解していませんか?イベント? これに関するお手伝いがあれば幸いです!お時間を おかげ
いくつかのサポートコード:sampleController.hで
:sampleController.mで
@property(nonatomic) UITouch* previousTouch
@property(nonatomic) UITouch* currentTouch
:
@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をするためには、これを持って保存します。 'UIGestureRecognizer'に組み込まれた機能 –