删除Raphael元素有时会导致它崩溃?

时间:2011-08-05 18:43:35

标签: javascript raphael

我有一个Raphael javascript程序,我在页面上写了几个(几十个,几百个,无论什么)圈子,如下所示:

evo_sprite = paper.circle(evo.x, evo.y, this.evo_size);

每个圆圈都有我想要显示的有限时间,之后我希望它被破坏,所以它不会减慢速度。

当我这样做时:

evo_sprite.hide();

我没有问题,但我知道精灵仍在那里,因此仍占用记忆。

所以我试过了:

evo_sprite.remove();

得到的结果是相同的结果(圆圈不再显示)。

唯一的问题是,经过一段时间(似乎是随机的),我的程序冻结,我收到错误消息:

  

a1.paper未定义   [打破此错误] Raphael =(function(){var a = / [,] + /,aO = / ... eturn d;}; an.el = ax [aY]; return an;})() ;

这对任何人都有意义吗?我呼叫删除不正确吗?如何通过在圆圈上调用删除来导致Raphael的代码(在min文件的第7行)中断?

1 个答案:

答案 0 :(得分:0)

如果没有看到你的代码就很难知道,但看起来它是没有被发现的拉斐尔画布(我认为这是a1.paper的)。

您是否在document.onload(或$(document).ready with jQuery)上实例化了Raphael画布?确保代码中没有任何闭包使函数试图在a1.paper范围之外运行。

然后回到基础 - 尝试只用几个圆圈开始,然后是50,然后是100.然后在不同的浏览器中尝试它,看看它是否在所有这些中停止工作。 SVG非常耗费浏览器,因此创建数千个圈子可能会使某些浏览器中断。