Я пытаюсь использовать анимацию cytoscape.js, чтобы визуализировать, как узлы вставляются в определенный тип дерева.Мне нужно запустить много разных анимаций, включая манипуляции с положением узлов в последовательности.Когда я попытался запустить их с использованием задержки, это не сработало - они не пошли в последовательности, поэтому я создаю анимацию, помещая их в массив, подобный этому (это пример, у меня есть различные виды анимаций):
animationArray.push(cy.nodes("[id='" + node.key + "']").animation({
position: { x: current.x + 50, y: current.y + 50 },
easing : easing,
duration: duration,
complete: function(){}
}));
, а затем воспроизводить их все с помощью функции, проходящей через массив - таким образом, они запускаются в последовательности:
playAnimation(animationArray, 0);
function playAnimation(aniArray, i) {
if (i === aniArray.length) {
return;
}
aniArray[i].play().promise().then(function () {
playAnimation(aniArray, i + 1)
})
}
Примечание: я считаю, что должно быть лучшеспособ запуска анимации в последовательности, но это лучшее, что я получил.
Моя проблема в том, что когда я меняю позицию узла в одной из анимаций, он не остается в своей новой позиции и возвращается обратнотуда, где это было в начале.Например, узел находится в позиции A. В первой анимации я перемещаю его из позиции A в позицию B, а во второй анимации я хочу переместить его из позиции B в C. Но после первой анимации узел возвращается в положение A, поэтомупереходит от А к С вместо.Я попытался решить эту проблему, установив позицию узла на B в этом complete: function(){}
, но это не сработало, как ожидалось.Похоже, что все эти полные функции выполнялись одновременно, а не в порядке с моей последовательностью анимации.
Любой совет, как мне подходить к этому?