所以我想用SVG制作一个绘图工具,我使用一种相当幼稚的方法来改变我的Path的d属性:
$("div#drawarea").bind("mousemove", function(ev) {
ev.preventDefault();
ev.stopPropagation();
var pX= (ev.pageX - this.offsetLeft);
var pY= (ev.pageY - this.offsetTop);
$path.attr("d", $path.attr("d") + " L" +pX+ "," + pY); //using jquery-svg here to change the d attribute
});
如您所见,我在 mousemove 函数上执行此操作。该代码有效,但是当我真正希望它是平滑线时,当鼠标快速移动创建许多直线时,它变得无响应。我认为这是因为我在 mousemove 事件上执行的大量字符串连接(当单击长时间保持时,路径上的 d 属性可能会变得非常大,实际上是数千个字符)。
我想知道是否有任何本机方法可以在路径末尾添加新值,而不是直接操作 d 属性。我检查了 jquery-svg 源代码,似乎该库在内部也使用了朴素的字符串连接模式,因此使用它的方法不会有任何好处。
另外我想知道是否是这种情况,或者浏览器是否只是限制了可以触发的 mousemove 事件的数量(每 X 毫秒一次?),因此没有性能优化可以改善这一点。