Fabric js从JSON加载画布

Posted

技术标签:

【中文标题】Fabric js从JSON加载画布【英文标题】:Fabric js Load canvas from JSON 【发布时间】:2016-09-30 12:52:21 【问题描述】:

我正在尝试实现保存和加载功能,但是当我尝试将 json 加载到画布中时出现错误。 错误消息显示“无法读取未定义的属性‘异步’”,但我认为 json 输出看起来不错。 (我不习惯 javascript,所以我不知道问题是在结构中还是在我的代码中..)

这是我的测试用例的 jsFiddle 链接:Example fiddle

目前的保存和加载功能是这样的:

var json = JSON.stringify(canvas);
canvas.clear();
canvas.loadFromJSON(json, function() 
    canvas.renderAll();
);       

感谢您的帮助! :)

【问题讨论】:

【参考方案1】:

您可能已经序列化了您的对象,其中一个(或多个)具有自定义属性,或者您完全创建并序列化了一个新的自定义类。看看这里以更好地了解 Canvas 序列化的规则:http://fabricjs.com/docs/fabric.Canvas.html#toJSON;

尝试使用 reviver 函数 (http://fabricjs.com/docs/fabric.Canvas.html#loadFromJSON) 运行您的代码。

canvas.loadFromJSON(json, function() 
   canvas.renderAll(); 
,function(o,object)
   console.log(o,object)
)

它应该给你一个线索,它是在什么负载点失败的。根据 loadFromJson 函数的运行方式检查您的序列化画布,您会找到罪魁祸首。

请同时参考这个答案并阅读评论:https://***.com/a/37545296/2779183

【讨论】:

嘿 :) 感谢您的回复。我试图在您的帮助下更新我的代码(问题是类型属性似乎不允许重命名),现在我认为它可以工作,但是子类的功能不再工作了。我更新了我的小提琴:link,我为我的子类创建的函数“saySth”不再起作用了。你对这个问题有什么想法吗?

以上是关于Fabric js从JSON加载画布的主要内容,如果未能解决你的问题,请参考以下文章

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

使用 fabric.js 在画布中加载 JSON

我们在 Fabric.js 中有画布修改事件吗?

Fabric.js 对象在 DOM 加载时从 JSON 呈现时无法更改填充颜色

fabric.js - 克隆的路径组不从 JSON 呈现

从 JSON 加载不起作用。 Fabric.JS