Анимация кадра Изображения с легким эффектом на iPad - PullRequest
1 голос
/ 18 ноября 2011

Позвольте мне показать вам пример (360-градусный вращатель 3D-объекта):
Демо: http://activeden.net/item/interactive-renders-360-deg-3d-object-rotator/39718?ref=mixDesign

введите описание изображения здесь
Как видите, камера 3D вращается по событию мыши. На самом деле, это набор изображений (кадров), анимирующих кадр за кадром в зависимости от события мыши.

Я хочу реализовать эту анимацию с целью - c , используя жест смахивания (или, может быть, мне следует использовать другой жест?). Так что я могу сделать вращение пальцем в влево , в вправо (я хочу анимацию с эффектом плавного облегчения, в зависимости от удара скорость ) .

Примечание: У меня есть готовые изображения для каждого кадра.

Примеры кодов, онлайн-уроки, помогающие мне в этом, действительно помогут.

! Стоит ли использовать какую-нибудь внешнюю графическую библиотеку, чтобы сохранить производительность? У меня есть сотни изображений (PNG), каждое размером 300kb

Заранее спасибо, мне очень нужна твоя помощь!

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Может быть, здесь будет проще перейти с touchesBegan:, touchesMoved: и touchesEnded:? Это позволит вам очень быстро реагировать на изменения скорости и направления.

Обновление: пример можно найти здесь .

2 голосов
/ 18 ноября 2011

Я не думаю, что вы должны использовать жест смахивания здесь. Я рекомендую вам 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];
}
...