나는 터치 움직임의 속도를 감지하려고 노력하고 있으며 나는 항상 기대했던 결과를 얻지 못하고 있습니다. (추가 : 속도가 너무 빠르다) 내가 펑키 한 뭔가를하고 있거나 더 나은 방법을 제안한다면 누구나 찾아 볼 수 있습니까?UITouch 이동 속도 감지
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
self.previousTimestamp = event.timestamp;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
CGPoint prevLocation = [touch previousLocationInView:self.view];
CGFloat distanceFromPrevious = distanceBetweenPoints(location,prevLocation);
NSTimeInterval timeSincePrevious = event.timestamp - self.previousTimestamp;
CGFloat speed = distanceFromPrevious/timeSincePrevious;
self.previousTimestamp = event.timestamp;
NSLog(@"dist %f | time %f | speed %f",distanceFromPrevious, timeSincePrevious, speed);
}
안녕하세요 ...이 문제를 구현하는 데 문제가 있습니다. 람다 함수는 objective-c의 일부입니까? 구현하려면 무엇이 필요합니까? tia – dizy
아니 ... 당신이 지정하는 상수입니다. 1에 가까울수록 최신 값에 더 많은 가중치를 부여합니다. n 값의 산술 평균과 비교하십시오. 각각의 새로운 값은 1/n의 가중치를가집니다. 지수의 경우 lambda = 2/(n + 1)을 설정합니다. 여기서 n은 상응하는 산술 값입니다. 따라서 새로운 값은 1/n 대신 2/(n + 1)의 가중치를 적용한 다음 기존 이동 평균을 (1-λ) = (n-1)/(n + 1) 덧붙였다. 클리어어요? – Jim