Javascript 改变拉法的正确方法是什么;l路径元素

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 1.5.2和2.0测试版在FF 4和IE 7+中进行了测试。唯一的区别是Raphaël 1.5.2的泄漏速度比2.0 beta快得多

我做错了什么


更新 把这个问题放到上下文中:我想用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();