【问题标题】:Paperjs: only draw changed itemsPaperjs:仅绘制更改的项目
【发布时间】:2016-01-23 23:30:13
【问题描述】:

我正在做一个项目,其中通常有数千个项目是用 paperjs 绘制的。这非常慢,因为 paperjs 正在重绘每个项目,即使它们没有改变。有没有办法避免这种情况?

我发现 this helpful paperjs fork 确实解决了这个问题,但它似乎不再维护,并且存在一些无法正确清除项目的问题。

只是想知道是否有一个“合适的”内置 paperjs 解决方案我还没有找到,或者我只需要制作自己的 fork。

要创建我正在使用的项目:

new Path.Rectangle(start, values.blockSize);

然后只是稍后更改它的颜色。

Here's a fiddle 这样你就可以看到它在高网格尺寸下有多慢

谢谢

【问题讨论】:

    标签: performance paperjs


    【解决方案1】:

    我认为我的叉子可以帮助你。我应该提供文件。 Here 是我解释我所做的更改以及它是如何工作的线程(应该可以将这些更改与最新的 paper.js 合并)。

    还有两个例子:persistance(渐进式淡出)和benchmark(单击并按空格查看区别)。代码是图纸目录中的here,但我不确定你能不能看到。

    【讨论】:

    • 谢谢 - 我已经尝试过了,它几乎就在那里,只是在清理项目方面有问题,而且已经过时了。我最终可能会从您的分支中创建自己的分支,以修复错误然后使用它
    • 是的,如果您理解我在应该有效的线程中解释时所做的更改。询问我是否需要任何东西(我很高兴您找到了此功能的用途,我认为它很重要)。
    • 谢谢@arthur.sw。您是否打算在拉取请求中提交对 paper.js 的持久性更改?
    • 作者还不想实现这些功能:“但是我厌倦了添加淡化效果,因为我希望这个库与后端无关,所以我只能添加可以轻松添加的东西在 SVG / WebGL 以及稍后的时间点。”也许我们应该重新询问我们是否表明许多用户对此感兴趣。
    • Paper.js 中有一个 SVG 后端的计划,但目前还不确定。据说 SVG 负责那些绘图优化,它只更新场景中发生变化的部分。我认为解决这个问题的正确方法是看看我们是否可以修改 Paper.js 以更新已更改的部分场景。我知道这是一项艰巨的任务,但这是最合适的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多