Hey Tôi biết đã có một vài bài viết về điều này - nhưng tôi vẫn không thể tìm thấy một câu trả lời đầy đủ cho vấn đề tôi đang gặp phải.dấu thời gian và tốc độ tính toán của một swipe
Chỉ mới đối với ca cao và iOS, tôi đang phát triển trò chơi iOS đầu tiên của mình. Trong trò chơi này, tôi muốn có thể tính toán tốc độ vuốt của người dùng. Tôi đang gặp khó khăn trong việc tìm kiếm không có khoảng cách giữa chạm liên tiếp trong chuyển động swipe, nhưng đang gặp khó khăn trong việc xác định thời gian trôi qua giữa chạm
trong
touchesMoved:
tôi làm các phép tính với các liên lạc hiện tại cũng như theo dõi ghi nhận trước đó liên lạc cuối cùng như một UITouchtrong
touchesEnded:
bây giờ tôi muốn để tính toán tốc độ của swipe, nhưng khi tôi làm điều gì đó như:timeDelay đôi = event.timestamp - self.previousTouch.timestamp;
này luôn trả về 0.
Tuy nhiên, sử dụng gcc Tôi có thể thấy rằng hai timestamps là trong thực tế không giống nhau. Ngoài ra, khi kiểm tra tôi thấy rằng các giá trị NSTimeInterval cho các sự kiện này là trên độ lớn ~ 10^(- 300). Điều này có vẻ kỳ quặc như một NSTimeInterval là vụ phải báo cáo giây kể từ khi hệ thống khởi động là nó không?
Tôi cũng đã cố gắng theo dõi NSDate của lần chạm trước đó và sử dụng nó cùng với [NSDate timeIntervalSinceNow]. Điều này mang lại kết quả xa lạ hơn, trả về một giá trị khoảng 6 lần. Một lần nữa, kể từ timerIntervalSinceNow trả về một NSTimeInterval
, giá trị này là rất lạ.
Tôi không hiểu gì về dấu thời gian? sự kiện? Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao! Cảm ơn thời gian của bạn
một số mã hỗ trợ:
Trong sampleController.h:
@property(nonatomic) UITouch* previousTouch
@property(nonatomic) UITouch* currentTouch
Trong 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 có chức năng tích hợp vào 'UIGestureRecognizer'. –