Как написать кривую Безье на лету с одной фиксированной точкой и одной изменяющейся

Если у меня есть объект, выполняющий этот путь анимации CAKeyframe (это просто овальная форма в верхней части iphone..

 UIBezierPath *trackPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 100, 280, 150)];

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

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


person darbid    schedule 25.01.2013    source источник


Ответы (1)


Поэтому я сказал себе: «Я… похоже, тебе придется ответить на этот вопрос самому, потому что никто даже не хочет его редактировать или говорить, что это дубликат…»

Поэтому я надеялся на более простой или готовый способ сделать это. Из того, что я нашел, нет простого пути. Кажется, шаги будут;

  1. получить текущую позицию анимированного слоя
  2. вычислите себя со всем своим собственным кодом, красивую гладкую кривую
  3. добавьте этот путь к анимации и анимируйте ее.

Что касается расчета кривой Безье, я все еще ищу какой-нибудь класс или код, в котором точки могут быть подключены к нему, и две контрольные точки создаются для класса UIBezier для создания кривой.

В моем случае я собираюсь анимировать только «вне» моей вышеупомянутой формы определенные точки и, таким образом, иметь готовые гладкие кривые, которые я подготовил.

Анимировать плавный выход из овала в любой точке очень сложно и в моем случае просто не стоит. Так что я этого не сделал.

person darbid    schedule 31.01.2013
comment
Извини за это. В любом случае, часть ответа вы найдете здесь stackoverflow.com/questions/2576113/, особенно ответ, который ссылается на проект Оле Бегеманна oleb.net/blog/2010/12/ - person Elise van Looij; 16.03.2014