我正在开发使用fabric.js-1.6.6的软件工件。其他程序员可能会使用该代码,这些程序员可能会在画布中添加/删除对象并与之交互。
为了避免其他程序员造成的延误,'刷新例程,我决定实现一个对我的代码用户透明的全局刷新功能。刷新程序如下所示:
(function render() {
fabric.util.requestAnimFrame(render);
canvas.renderAll();
})();
我知道它可能不是超级高效的(因为画布一直在刷新),但我阻止其他程序员在实现外观永久变化的专用对象时自己处理渲染画布,因此,要求画布更新。
最近,我尝试将我的代码迁移到fabric 2.0.0 beta 4,但画布不再更新。关于如何解决这个问题的任何想法?
此外,还有更好,更有效的方法来获得永久性的画布刷新程序吗?我决定做的是受到Animating polygon points官方面料演示的启发,但我的画布需要更多的对象一直在变化,所以这可能不是最好的策略。
答案 0 :(得分:0)
我的个人建议是开始观看2.0.0
新版本实现了一个名为requestRenderAll
的新方法,该方法将正确使用requestAnimationFrame。
考虑让画布每16ms进行一次自动刷新可能是一种矫枉过正。 对我来说,最优雅的解决方案是让其他开发人员使用requestRenderAll而不是renderAll。
链接调用requestRenderAll
将无效,因为直到动画仍处于请求阶段,其他人才会被请求。