Animation Cytoscape.js动画序列

Animation Cytoscape.js动画序列,animation,position,sequence,cytoscape.js,Animation,Position,Sequence,Cytoscape.js,我试图使用cytoscape.js动画来可视化节点是如何插入到特定类型的树中的。我需要运行许多不同的动画,包括操纵序列中节点的位置。当我尝试使用delay运行它们时,它不起作用-它们没有按顺序运行,因此我正在创建动画,将它们放入这样的数组中(这是一个示例,我有不同类型的动画): 然后使用经过数组的函数来播放它们-这样,它们按顺序运行: playAnimation(animationArray, 0); function playAnimation(aniArray, i) { if (

我试图使用cytoscape.js动画来可视化节点是如何插入到特定类型的树中的。我需要运行许多不同的动画,包括操纵序列中节点的位置。当我尝试使用delay运行它们时,它不起作用-它们没有按顺序运行,因此我正在创建动画,将它们放入这样的数组中(这是一个示例,我有不同类型的动画):

然后使用经过数组的函数来播放它们-这样,它们按顺序运行:

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,因此它将从A移动到C。我试图通过在
complete:function()。看起来所有这些完整的函数都是同时执行的,而不是按照我的动画顺序


有什么建议我该如何处理这个问题吗?

我想出来了。我猜在将动画推入数组时,它是用节点的当前信息初始化的,之后执行的动画不会对其产生影响。所以当按下第二个动画时,它会将节点移动到C,它会查看节点并找出它的位置,它仍然是A,因为第一个动画还没有运行。因此,我添加了如下内容:

cy.$('#' + x.key).position({
        x: current.x + 50,
        y: current.y + 50
    });

将动画推入阵列后。最后,我将x位置设置回起始位置,然后运行动画数组。

我找到了它。我猜在将动画推入数组时,它是用节点的当前信息初始化的,之后执行的动画不会对其产生影响。所以当按下第二个动画时,它会将节点移动到C,它会查看节点并找出它的位置,它仍然是A,因为第一个动画还没有运行。因此,我添加了如下内容:

cy.$('#' + x.key).position({
        x: current.x + 50,
        y: current.y + 50
    });

将动画推入阵列后。最后,我将x位置设置回起始位置,然后运行动画数组。

cytoscape中节点位置的动画在a**中是一个真正的难题,我试图让它为您工作,但对我来说根本不起作用。也许其他人有答案,因为我也很想知道答案!最好的luck@StephanT. 我想出来了。我将用答案更新我的问题。当找到你自己答案的答案时,你应该始终将其作为答案发布,而不是编辑,之后你可以接受该答案。这样,人们就会马上知道该做什么。要获得更详细的解释,请访问帮助中心。谢谢,我不知道。我修复了它。cytoscape中节点位置的动画在a**中是一个真正的难题,我试图让它为您工作,但对我来说根本不起作用。也许其他人有答案,因为我也很想知道答案!最好的luck@StephanT. 我想出来了。我将用答案更新我的问题。当找到你自己答案的答案时,你应该始终将其作为答案发布,而不是编辑,之后你可以接受该答案。这样,人们就会马上知道该做什么。要获得更详细的解释,请访问帮助中心。谢谢,我不知道。我修好了。