Javascript 改变拉法的正确方法是什么;l路径元素
我试图通过以下方式更改Raphaël路径元素(请将代码包含构建内容作为完整示例): 不幸的是,这种方法会泄漏内存。我用Raphaël 1.5.2和2.0测试版在FF 4和IE 7+中进行了测试。唯一的区别是Raphaël 1.5.2的泄漏速度比2.0 beta快得多 我做错了什么Javascript 改变拉法的正确方法是什么;l路径元素,javascript,memory-leaks,raphael,Javascript,Memory Leaks,Raphael,我试图通过以下方式更改Raphaël路径元素(请将代码包含构建内容作为完整示例): 不幸的是,这种方法会泄漏内存。我用Raphaël 1.5.2和2.0测试版在FF 4和IE 7+中进行了测试。唯一的区别是Raphaël 1.5.2的泄漏速度比2.0 beta快得多 我做错了什么 更新 把这个问题放到上下文中:我想用Raphaël实现一个“实时”图形控件。因此,我为每个序列使用一个数组缓冲区,并在达到缓冲区大小时渲染它们,因此我只需要渲染给定的固定长度序列 在Raphaël中,我看到的唯一方法
更新 把这个问题放到上下文中:我想用Raphaël实现一个“实时”图形控件。因此,我为每个序列使用一个数组缓冲区,并在达到缓冲区大小时渲染它们,因此我只需要渲染给定的固定长度序列
在Raphaël中,我看到的唯一方法是每个系列都有一个path元素,它可以更新它的path属性
.attr({path:path.attr('path')+getSvgPath(buffer)})
,如果需要,然后根据缓冲区大小在x轴上进行平移。动画({translation:(bufferSize*valuesDistance*-1)+',0'},500,“我最近遇到了一个类似的问题。我不认为这是泄漏,而是Raphael在绘制路径时消耗了大量内存。我只是猜测它在内部使用了一些缓存阵列,占用了大量内存
我的方法是抛弃Raphael,用简单的旧javascript绘制svg元素。我最近遇到了类似的问题。我不会说这是泄漏,而是Raphael在绘制路径时消耗了大量内存。我只是猜测它在内部使用了一些缓存数组,占用了大量内存
我的方法是抛弃Raphael,用简单的旧javascript绘制svg元素
var n = 100,
i = 0;
var values = [n];
var panel = document.createElement("div");
var paper = null;
var path = null;
panel.id = "panel";
panel.style.top = '0px';
panel.style.left = '0px';
panel.style.width = '300px';
panel.style.height = '300px';
panel.style.background = 'black';
document.getElementsByTagName('body')[0].appendChild(panel);
paper = Raphael(panel, 0, 0);
path = paper.path('m0,0');
path.attr({ stroke: '#fff', 'stroke-width': 1 });
function test () {
i = n;
while (i--)
values[i] = Math.round(Math.random() * 3);
// perform change here!
path.attr({ path: 'm0,0l0,' + values.join('l3,') });
// just a test case!
setTimeout(test, 1);
};
test();