首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Fabric.js中重置画布并使用JSON重新加载

在Fabric.js中重置画布并使用JSON重新加载
EN

Stack Overflow用户
提问于 2014-01-17 12:29:13
回答 2查看 33.2K关注 0票数 14

我正在构建一些类似厨房的例子,除了我需要能够拥有多个视图。

http://fabricjs.com/kitchensink

名片:正面和背面

在您编辑时,我会定期保存JSON。

如果你想在不重新加载页面的情况下编辑背面(因为我使用的是AngularJS),我该如何擦除当前的画布并重新加载新的JSON呢?

我当前正在加载JSON,您单击change view,我运行canvas.clearContext(),然后重新加载新的JSON。这并不像我预期的那样工作。

更新

我正在使用一个指令来管理这个画布。当JSON可用时,我正在创建instantiate指令,当我尝试更新它时,无论出于什么原因,都无法工作。

我删除了它,并使指令initiate本身为空,现在我只是通过服务执行loadJson。耶!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-17 15:59:40

通常,canvas.loadFromJSON()会在加载新对象之前清除整个画布。否则,您可以运行canvas.clear();

http://fabricjs.com/docs/fabric.Canvas.html#clear

如何加载您的JSON?

像这样的东西应该是有效的:

代码语言:javascript
运行
复制
var json = canvas.toJSON();

canvas.clear();

canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));

加载JSON之后,调用canvas.renderAll()很重要。在canvas.loadFromJSON(json, callback)的第二个参数中,您可以定义一个cllback函数,该函数在加载/添加所有对象后调用。

http://fabricjs.com/docs/fabric.Canvas.html#loadFromJSON

票数 35
EN

Stack Overflow用户

发布于 2019-10-09 19:14:09

我在运行React时遇到了类似的问题,使用canvas.clear()是不够的-理论上删除了对象,但场景中仍然有一些东西,这是对新加载的对象的干扰,可能是附加到这些删除的对象的事件……无论如何,现在我正在使用canvas.dispose()在重新加载场景时清除这个画布,问题已经解决了。

你可以使用check the docs

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21177934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档