我一直在研究类似于命运之轮的纺车。我差不多破了它,但后来碰了一堵砖墙。与此this帖子中提到的问题相同。轮子动画需要来回移动,就像它产生动量一样,在释放时它会顺时针转动。
我已经完成所有工作但是,在第一次触摸时,当我的手指触地而不是从当前的站立位置开始时,它会跳起来。我明白为什么它这样做,但我不知道怎么做它所以没有跳跃。
我见过使用UIRotateGestureRecognizer的建议,我发现它的问题是;当您旋转度数增量并且动画变得更快时,当您以相反的方式进行时,您必须从当时的任何程度减小,这意味着动画从您正在打手势的方向走向错误的方向,直到您减少到负面度。我确信有可能纠正这些问题,但是如果有解决方案的话,我现在的解决方案ID非常接近而不是重写。
我意识到其他帖子使用totalRadians是解决方案,对我来说它不允许逆时针动画。
totalRadians += fabs(theAngle - totalRadians);
totalRadians = fmod(totalRadians, 2*M_PI);
这是我到目前为止所做的。
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:wheelImage];
xleg = location.x-starttoset.x;
yleg = location.y-starttoset.y;
swipetimer = CFAbsoluteTimeGetCurrent();
CGAffineTransform transforms;
location = [touch locationInView:wheelImage];
float theAngle = atan2( location.y-wheelImage.center.y, location.x-wheelImage.center.x );
transforms = CGAffineTransformConcat(spinningWheelImage.transform,CGAffineTransformMakeRotation(theAngle));
}
答案 0 :(得分:0)
为了防止跳跃,你应该在触摸开始移动时跟踪位置,而不是在第一次发生时跟踪。