Как нарисовать путь вектора прогрессивно?(Raphaël.js) - PullRequest
31 голосов
/ 08 января 2011

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

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


Этолегко сделать с прямыми путями, так же просто, как пример на этой странице ::

path("M114 253").animate({path: "M114 253 L 234 253"});

Но попробуйте изменить код на этой странице, скажем, так: *

path("M114 26").animate({path: "M114 26 C 24 23 234 253 234 253"});

И вы поймете, что я имею в виду.Путь, безусловно, анимируется из его начального состояния (точка "M114 26") до конечного состояния (кривая "C 24 23 234 253 234 253", начиная с точки "M114 26"), но не указанным способом, а не какэто рисуется.

Я не понимаю, как animateAlong может это сделать.Он может анимировать объект вдоль пути, но как я могу сделать так, чтобы этот путь постепенно показывал себя во время анимации объекта вдоль него?


Решение?

(Через ответ peteorpeter .)

Похоже, что в настоящее время лучший способ сделать это - использовать «поддельные» тире с использованием необработанного SVG.Для объяснения см. эту демонстрацию или этот документ , стр. 4.

Как производить прогрессивный рисунок?

Мы должны использовать stroke-dasharray и stroke-dashoffset и знать длину кривой для рисования.Этот код ничего не рисует на экране для круга, эллипса, полилинии, многоугольника или пути:

<[element] style="stroke-dasharray:[curve_length],[curve_length]; stroke-dashoffset:[curve_length]"/>

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

Если вы знаете лучший способ, пожалуйста, оставьте ответ.


Обновление (26 апреля 2012 г.): нашел пример, который хорошо иллюстрирует идею,см. Анимированные кривые Безье .

Ответы [ 11 ]

0 голосов
/ 08 января 2011

Вы пробовали Рафаэля animateAlong ? Вы можете увидеть это в действии на демонстрационной странице .

...