Javascript 使用Snap.svg设置多边形中点的动画

Javascript 使用Snap.svg设置多边形中点的动画,javascript,svg,snap.svg,Javascript,Svg,Snap.svg,我正在尝试使用以下代码为多边形中的点设置动画: var lineWeight = 2.5, startPoints = [25,18,54,24,35,38,42,51,12,34,23,52,25,18], endPoints = [15,38,54,24,35,38,42,51,12,34,23,52,25,18]; var logo = Snap('.logo'); var p1 = logo.polygon().attr({ points: startPoin

我正在尝试使用以下代码为多边形中的点设置动画:

var lineWeight = 2.5,
    startPoints = [25,18,54,24,35,38,42,51,12,34,23,52,25,18],
    endPoints = [15,38,54,24,35,38,42,51,12,34,23,52,25,18];

var logo = Snap('.logo');

var p1 = logo.polygon().attr({
    points: startPoints,
    fill: 'none',
    stroke: 'white',
    strokeWidth: lineWeight,
    strokeLinejoin: 'round'
});

setTimeout(function () {
    p1.animate({
        points: endPoints
    }, 2000, mina.elastic);
}, 2000);
setTimeout
触发动画时,多边形就会消失,在动画过程中控制台中出现如下错误:

setTimeout(function () {
    p1.animate({
        points: endPoints.toString()
    }, 2000, mina.elastic);
}, 2000);

看起来动画正在错误地更新
属性的值。知道为什么吗?我该怎么解决

谢谢大家!

更新

出于某种原因使用Snap.svg v3.0时,它可以工作,但不是v4.1:

(函数($){
var线宽=2.5,
起始点=[25,18,54,24,35,38,42,51,12,34,23,52],
终点=[40,10,54,24,35,38,42,51,12,34,23,52];
var logo=捕捉('.logo');
变量p1=logo.polygon().attr({
要点:起点,
填写:'无',
笔画:“白色”,
笔划宽度:线宽,
strokeLinejoin:“圆形”
});
setTimeout(函数(){
p1.制作动画({
点:端点
},1000,最小弹性);
}, 2000);
})();
.logo{
背景:绿色;
高度:68px;
左:10px;
位置:绝对位置;
顶部:10px;
宽度:68px;
}

Snap.svg动画函数可以获取一个值数组,它将一步一步地通过这些值设置动画。因此,它不会自动将
端点
数组转换为字符串,就像使用
.attr()
函数将
属性设置为
起始点
数组一样

因此,您将通过一系列单个数值设置动画,而不是对单个点字符串设置动画。单个数字不是有效的多边形
属性

要使其工作,必须将
端点
数组显式转换为字符串。可以通过调用数组的
toString()
方法来实现,如下所示:

setTimeout(function () {
    p1.animate({
        points: endPoints.toString()
    }, 2000, mina.elastic);
}, 2000);

这一切都是有道理的,但出于某种原因,它不起作用。奇怪的是,当我降级到Snap.svgv3.0时,它可以工作,但我没有看到关于中断API更改的注释。嗯,这很奇怪。也许可以在上提交一个问题?这可能是无意中的中断。@BrandonDurham你有没有发现为什么它在0.4.0中不起作用?啊,没关系。看起来有一个问题和一个修复程序,只是还没有实现。