javascript - Konva.js : simultaneously run tweens look out of sync

标签 javascript animation konvajs konva

情况是这样的。我有一组节点,需要它们向上移动然后向下移动。为此,我使用 Konva.Tween as in the demo 。如您所见,我在 for 循环中创建并运行补间。我想要的是所有方 block 同步移动,但看起来有些方 block 正在完全移动,但有些方 block 却发疯了,移动有延迟或其他什么。有趣的是,如果你多次点击“GO”按钮,你会发现是相同的方 block 不同步,而不是随机的,所以这是持久的。

我做错了什么,有正确的方法来实现我需要的吗?

最佳答案

将它们添加到 Konva.Group,然后在该组上运行补间。您可以在创建它们时将它们添加到组中,也可以在需要补间它们之前使用 rect.moveTo(group) [OR group.add(rect)]。

var tweenGroup = new Konva.Group();
layer.add(tweenGroup);

document.getElementById('go').addEventListener('click', () => {
    const durationSec = 0.3;
    for (const r of rects) {
        tweenGroup.add(r);
    }
    new Konva.Tween({
        node: tweenGroup,
        y: 70,
        duration: durationSec / 2,
        onFinish: function() {
            new Konva.Tween({
                node: tweenGroup,
                y: 100,
                duration: durationSec / 2
            }).play();
        }
    }).play();
})

这是更新后的代码笔,它们同步移动。 https://codepen.io/richardjonlewis/pen/VwrGqNN

关于javascript - Konva.js : simultaneously run tweens look out of sync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71279967/

相关文章:

javascript - 如何使用kineticjs在多边形上制作圆 Angular

javascript - 根据字符串起始值进行过滤

javascript - 将某些数组元素移到数组前面

javascript - 如何使用来自 Google Maps Places API 的结果更新 Angular 范围参数?

r - R 中的 map 和动画

animation - 如何使 CSS3 悬停过渡仅运行一次而不是在用户 'rewind' 之后运行 'un-hovers' ?

javascript - ng-animate 不让动画完成

ios - 如何防止 sceneFunc() 每次都清除上下文?

javascript - 如何从 KONVA 组中隐藏一个元素

javascript - 在循环中组合多个语句