Я пытаюсь запустить анимацию с помощью d3, объединив анимации вместе с рекурсией. У меня есть функция одушевленные, которая называет себя так, пока все анимации не соединены друг с другомРекурсивная проблема с d3-анимацией
(function animate(transition) {
// code here
animate(transition.transition())
})(selection.transition());
визуализация сама работает, но я стараюсь, чтобы отслеживать, сколько раз функция была вызвана, так что я могу показать он на экране синхронизируется с анимацией. Тем не менее, рекурсия соединяет переходы вместе до первого, даже заканчивается, поэтому мой счетчик всегда равен числу последнего перехода.
Вот a jsfiddle, который показывает, что я пытаюсь сделать. Странно, что радиус окружностей задан правильно, т. Е. При настройке атрибутов он получает правильный счет, а при одном и том же вызове анимации он неверен. Я просмотрел старые проблемы с переполнением стека, и я просмотрел документы d3, и я не могу найти хороший способ отслеживать счет во всей рекурсии. Кто-нибудь знает об этом?
Право. Он объединяет их вместе, а затем воспроизводит их медленно, что было бы именно тем, что я хочу, если бы у меня был способ сохранить переменную count для каждого перехода. Я придумал какой-то хакерский способ сделать это, а это так, чтобы переходить к счетчику параллельно, как это '(function animate (circle_trans, counter_trans) { // ... counter_trans.call (функция() { counter_trans .__ data__ = кол; }); // ... одушевленные (circle_trans.transition(), counter_trans.transition()); })(); ' Но я чувствую, должен быть более простой способ – user2592854