【发布时间】:2017-03-27 12:14:07
【问题描述】:
你好
我正在使用此代码创建 SVG 线条并为其设置动画,第一个不起作用,但其余的都起作用,我缺少什么?
var newElement = document.createElementNS('http://www.w3.org/2000/svg','line');
newElement.setAttribute('class','travelPath');
newElement.setAttribute('x1',currentCity.x);
newElement.setAttribute('y1',currentCity.y);
newElement.setAttribute('x2',nextCity.x+10);
newElement.setAttribute('y2',nextCity.y+10);
newElement.style.stroke="#3541b1";
$("#theSVG").append(newElement);
var length = newElement.getTotalLength();
$(newElement).css({
'stroke-dasharray': length+1,
'stroke-dashoffset': length+1
});
$(newElement).animate({'stroke-dashoffset': 0}, 3000, mina.bounce);
length 变量在第一个 console.log 中返回为 0,但是当我稍后再次运行它时,它会返回正确的值并进行动画处理。
几乎就好像这条线在它尝试动画之前没有被绘制一样。
【问题讨论】:
-
既然只是一条简单的线,为什么不自己计算长度呢?
-
好吧,因为此方法绘制了可能由用户选择的 2.000 条不同的线之一。你会如何看待这个 Sirko?
-
length = Math.sqrt( Math.pow( newCity.x + 10 - currentCity.x, 2 ) + Math.pow( newCity.y + 10 - currentCity.y, 2 ) )。希望我没有忘记任何括号。 -
谢谢你,伙计,工作。仍然不清楚为什么它首先失败了,哈哈。
标签: javascript jquery snap.svg