1

让我向您展示示例(360 度 3D 对象旋转器):
演示:http

在此处输入图像描述
://activeden.net/item/interactive-renders-360-deg-3d-object-rotator/39718?ref=mixDesign 如您所见,有一个相机 3D 在鼠标事件上旋转。实际上,它是根据鼠标事件逐帧动画的图像(帧)集合。

我想用滑动手势实现这个动画- c使用滑动手势(或者我应该使用另一个手势?)。这样我就可以用手指向左向右旋转(我想要具有平滑缓动效果的动画,具体取决于滑动速度速度)。

注意:我为每一帧准备好了图像。

示例代码,这样做的在线教程真的会帮助我。

!我应该使用一些外部图形库来保持性能吗?我有数百张图片(PNG),每张大小为 300kb

提前谢谢你,我真的需要你的帮助!

4

2 回答 2

4

touchesBegan:也许使用,touchesMoved:touchesEnded:here会更容易?这将使您能够非常快速地对速度和方向变化做出反应。

更新:示例可以在这里找到。

于 2011-11-21T10:17:28.243 回答
2

我认为您不应该在这里使用滑动手势。我建议您使用具有较短 minimumPressDuration 的 LongPressGesture。

让我展示示例代码:

longPress = [ [UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGesture:)] 
longPress.delegate = self;
longPress.minimumPressDuration = 0.05;
[viewWithImage addGestureRecognizer:longPress];


float startX; 
float displacement = 0;
-(IBAction)handleLongPressGesture:(UILongPressGestureRecognizer *)sender
{   

float nowX;
    if ( sender.state == UIGestureRecognizerStateBegan ) 
    {
        startX = [sender locationInView:viewWithImage].x;
    }
    if ( sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled)
    {
       ... do something at end ... 
    }
nowX = [sender locationInView:mainWidgetView].x;
displacement = nowX - startX; 

  // set right rotation with displacement value
  [self rotateImageWith:displacement];
}
于 2011-11-18T11:44:42.200 回答