动画Paper.js路径段和&处理信息

时间:2015-04-17 03:10:26

标签: javascript paperjs

我尝试使用Paper.js和Tween.js在两个复杂路径之间制作动画。我已经非常接近,我可以将路径中的所有点移动到正确的最终位置,但是我对每个段的handleIn和handleOut都有问题。它似乎没有更新它们。

这是我的代码:http://codepen.io/anon/pen/rVBaZV?editors=101

var endPathData = 'M740,342.9c-32,...etc...';
var endPath = new Path(endPathData);
endPath.fillColor = '#4CC7A4';

beginPathData = 'M762.8,262.8c-48,...etc...';
var beginPath = new Path(beginPathData);
beginPath.fillColor = '#FFC1D1';

var numberOfSegments = beginPath.segments.length;

for (var i = 0; i < numberOfSegments; i++) {
    var tween = new TWEEN.Tween(beginPath.segments[i].point)
        .to({
        x: endPath.segments[i].point.x,
        y: endPath.segments[i].point.y
    }, 3000)
        .easing(TWEEN.Easing.Linear.None)
        .start();
}

view.draw();

view.onFrame = function (event) {
    TWEEN.update();
};

我喜欢粉红色的路径,最终会像绿色路径一样,但现在我被卡住了。反正有没有实现这个目标?

1 个答案:

答案 0 :(得分:3)

您也需要补间句柄。 每个段都有两个句柄:segment.handleIn和segment.handleOut

在示例代码中补间segment.point(段位置),从而产生段的正确位置。

我不知道你的Tween库,所以由你来实现它。 但看起来你可以为

添加更多新的补间
beginPath.segments[i].handleIn

之一
beginPath.segments[i].handleOut

您可以通过让paperjs平滑路径并处理句柄来轻松检查您的代码是否正确。通过像这样更新onFrame函数:

view.onFrame = function (event) {
    TWEEN.update();
    beginPath.smooth();
    endPath.smooth();
};

这导致形状相同的路径。