Анимировать объект по нарисованному пути? - PullRequest
1 голос
/ 14 июля 2010

Я недавно скачал пример приложения GLPaint от apple.Это приложение показало мне, как реализовать рисование, но теперь я хотел бы анимировать изображение поверх нарисованных линий.Подобно тому, как работает приложение «Управление полетом», я хотел бы иметь возможность нарисовать путь для изображения, а затем анимировать изображение по этому пути.

Ответы [ 3 ]

5 голосов
/ 15 июля 2010

вы можете создать свой путь

CGMutablePathRef thePath = CGPathCreateMutable();

, а затем в touchesBegan и touchesMoved добавить к вашему пути

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  UITouch *touch = [touches anyObject];
  if(touch){
    CGPoint tapPoint = [touch locationInView: self.view];
    CGPathMoveToPoint(thePath, NULL,tapPoint.x,tapPoint.y);    
  }
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
  UITouch *touch = [touches anyObject];
  if(touch){
    CGPoint tapPoint = [touch locationInView: self.view];
    CGPathAddLineToPoint(thePath, NULL,tapPoint.x,tapPoint.y);
  }
}

и на touchedEnded, как сказал Джошуа, создать CAKeyframeAnimation и установитьего путь к пути и установите другие свойства вашей анимации (продолжительность и т. д.) и примените его к вашему объекту

1 голос
/ 15 июля 2010

Посмотрите на CAKeyframeAnimation , это позволяет вам установить путь (который является CGPathRef) для анимации, по которой будет идти.

0 голосов
/ 30 сентября 2011

Основываясь на коде от AtomRiot, я создал простой проект в своем блоге.См. в этом посте , также опубликовано короткое видео, показывающее результат.

Однако, когда анимация заканчивается, изображение каким-то образом возвращается в положение (0,0), поэтому может потребоваться добавить дополнительныекод для сброса местоположения изображения после завершения анимации.

Кроме того, обнаружено, что нельзя изменить анимацию после ее запуска, нужно дождаться ее окончания, прежде чем вы сможете изменить ее.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...