FabricJS - 从 JSON 加载 Canvas 时出错

Posted

技术标签:

【中文标题】FabricJS - 从 JSON 加载 Canvas 时出错【英文标题】:FabricJS - Error when loading Canvas from JSON 【发布时间】:2012-07-02 12:37:32 【问题描述】:

按照this answer 中的建议,我在画布中使用了从fabric.Image 扩展而来的自定义对象。当我从服务器检索 json 字符串时,尝试将其加载到画布时出现奇怪的错误:

var canvas = new fabric.Canvsd();

function loadCanvas(resp) 
  // response object contains a data field
  // that's essentialy a JSON string
  var json = JSON.parse(resp.data);
  canvas.loadFromDatalessJSON(json);

我得到一个奇怪的控制台打印输出:Cannot call method 'setupState' of undefined (fabric.min.js: 1118)。我尝试用canvas.loadFromJSON(json) 替换呼叫,却得到一个模糊的SyntaxError: Unexpected token o 错误。当我在链接线程中建议的更改之前使用常规 fabric.Image 时,此代码运行良好。我担心这可能是我在使用附加数据扩展 favric 的 Image 类时缺少的东西。想法?

【问题讨论】:

【参考方案1】:

经过一番搜索,我在fabricjs google 组中看到了similar thread。原来我搞砸了 3 件事:

    我在不同位置为我制作的另一个自定义对象(我有几个)缺少了 fromObject() 回调定义。 我使用的是loadFromDatalessJSON(),而我应该只使用loadFromJSON()。 我使用 JSON.parse(json) 将 json 字符串解析为实际的 JSON,然后将其传递给 loadFromJSON() 函数,该函数需要一个 json 字符串并在内部处理解析。

呸。

【讨论】:

以上是关于FabricJS - 从 JSON 加载 Canvas 时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用fabricjs从json到图像

Fabric js从JSON加载画布

FabricJS:使用 Image 子类时无法执行“drawImage”

使用 Fabric js 使背景图像适合画布大小

如何使用threejs将fabricjs加载为obj的纹理

在 fabricjs 对象上应用 JSON.stringify 后自定义属性丢失