5

ねえ、私はこれについてすでにいくつかの投稿があることを知っています-それでも私は私が抱えている問題に対する適切な答えを見つけることができません。

ココアとiOSを初めて使用する私は、最初のiOSゲームを開発中です。このゲームでは、ユーザーのスワイプの速度を計算できるようにしたいと思います。スワイプモーションで連続するタッチ間の距離を見つけるのに問題はありませんが、タッチ間の経過時間を判断するのに問題があります

  • 私は現在のタッチでtouchesMoved:計算を行い、最後に以前に記録されたタッチをUITouchとして追跡します

  • ここでスワイプの速度を計算しtouchesEnded:たいのですが、次のようなことをすると次のようになります。

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

これは常に0を返します。

ただし、gccを使用すると、2つのタイムスタンプが実際には同じではないことがわかります。さらに、調べてみると、これらのイベントのNSTimeInterval値は〜10 ^(-300)の大きさであることがわかりました。NSTimeIntervalはシステムの起動から数秒を報告することになっているので、これは奇妙に思えますね。

また、前のタッチのNSDateを追跡し、[NSDatetimeIntervalSinceNow]と組み合わせて使用​​してみました。これにより、さらに奇妙な結果が得られ、毎回約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
}
4

1 に答える 1

4

UIPanGestureRecognizervelocityInView、使用できるプロパティがあります。ドキュメントはこちら

また、この ray wenderlichチュートリアルが参考になるかもしれません。

(そしてこれはちょっとしたことではありません-しかし、いくつかのグーグル検索は、この種のことに関する大量の資料を見つけます.より大きな人生の質問のためにすべての髪の毛を引っ張る必要はありません;-)

于 2012-06-17T01:17:51.847 に答える