这个问题与两年前提出的另一个问题在本质上相似:为什么 Raphael 的帧速率在这段代码上会变慢?
我通过以下方式在 Chromium 25 中使用 Raphael 2.1.0:
<html>
<head>
<title>Drawfun</title>
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<script src="raphael.js"></script>
<script>
var paper = Raphael(10, 50, 320, 200);
var anim = Raphael.animation({transform: "R360"}, 500).repeat(Infinity);
var rect = paper.rect(50, 40, 10, 20);
rect.attr("fill", "#f00");
rect.attr("stroke", "#fff");
rect.animate(anim);
</script>
</body>
</html>
最初,矩形平滑地旋转,正如人们所期望的那样。一两分钟后,旋转以约 15 FPS 的速度运行。五到八分钟后,动画以大约 5 FPS 的速度运行。
Chrome CPU 配置文件表明,随着动画变得越来越不稳定,脚本在 和 中花费的时间越来越少,而(program)
在.repush
eve.listeners
Chrome 任务管理器并没有表明存在内存泄漏,无论是在 JS 内存池中还是在 Chrome 中,但确实显示该页面随着时间的推移消耗越来越多的 CPU。
在最新版本的 Firefox 中运行该页面时,动画会变得更加不稳定,而且速度更快。这些结果已在 Linux 和 Windows 上得到验证,因此这不是操作系统问题 :)。
有没有人知道我的代码或 Raphael 的内部可能有什么问题?