Привет, у меня есть базовая диаграмма потока энергии, как показано ниже.
SVG находится здесь
Как мне заставить цветные круги двигаться по цветным дорожкам? Я пробовал использовать что-то вроде
<animateMotion
dur = "10s"
repeatCount = "indefinite"
path = "m 281.66783,66.052163 c -58.15279,11.63055 -95.43899,64.652217 -95.43899,64.652217"
/>
но при этом желтый круг исчезает. Я тоже считаю, что этот метод не допускает разнонаправленности.
Мне нужно анимировать круги, чтобы они двигались в обоих направлениях по своему пути и с разной скоростью. Требуется ли для этого JavaScript или это можно сделать в SVG, чтобы минимизировать код для активации анимации?
Спасибо за любое руководство



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, вам нужны (массивы) keyPoints и keyTimes на <animateMotion> для позиционирования. (0=начало 1=конец)
Добавьте <animate> для других настроек атрибутов.
<svg viewBox = "0 0 200 100">
<path id = "PATH" stroke = "black" fill = "none" d = "M10 50H200" />
<circle r = "10" fill = "red">
<animateMotion dur = "5s" keyPoints = "0;1;0" keyTimes = "0;.8;1"
calcMode = "linear" repeatCount = "indefinite">
<mpath href = "#PATH" />
</animateMotion>
<animate
attributeName = "fill"
attributeType = "XML"
values = "red;green;yellow;hotpink;blue"
keyTimes= "0;0.4;0.6;0.8;1"
dur = "10s"
repeatCount = "indefinite"/>
<animate
attributeName = "r"
attributeType = "XML"
values = "10;15;10"
keyTimes= "0;0.5;1"
dur = "1s"
repeatCount = "indefinite"/>
</circle>
</svg>
Одним из возможных решений было бы нарисовать путь (за которым следует точка) примерно так: path = "M 281.66783,66.052163 c -58.15279,11.63055 -95.43899,64.652217 -95.43899,64.652217 C186.23,130.70438 22 3.515,77,683 281,66783,66,05"` В ваш код я добавил жирный шрифт.