为什么我的paperjs应用程序需要占用大量CPU并且速度慢?

时间:2016-01-04 21:59:16

标签: javascript canvas paperjs

我有this Sketch。您可以使用最多加速来左右驾驶,左右旋转船只方向。 (虽然由于无法从编辑器中模糊而无法在Sketch上运行,因此按键事件不会在画布窗口中注册)

每一帧都将船舶当前质心处的点加到完整的船舶轨道上。这一切都很好,花花公子。大约2分钟左右 - 取决于您的计算机 - 飞行时出现问题。逐渐地,整个事情开始减慢,帧速率下降到可见的水平。最初我认为这是因为每个点都需要存储在RAM中,而且它们太多了,但是标签的内存似乎并没有明显增加。 CPU使用率似乎迅速上升到约20%,并且通常会保持在那里。有没有人对此有解释或解决方法?

1 个答案:

答案 0 :(得分:2)

好的,我对此进行了一些阅读。您不断添加到框架中的ship.path标记回调。尝试限制路径的最大大小,如下所示:

var MAX_SEGMENTS = 1000

ship.path.add(centroid(ship.shipPath));

function onFrame(event) {
    if (ship.path.length > MAX_SEGMENTS)
    {
        var d = ship.path.length - MAX_SEGMENTS
        ship.path.removeSegments(0, d)
    }

更新sketch