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中不起作用?啊,没关系。看起来有一个问题和一个修复程序,只是还没有实现。