【发布时间】:2014-05-17 13:51:10
【问题描述】:
我使用canvas.toJSON() 方法序列化了我的画布。但尝试重新创建我的画布时,会导致对象被重绘,但 100% 无响应(无法拖动)。
我试图变得聪明,并尝试通过从 JSON 中提取对象来一一重绘对象(我在下面所做的伪代码)。
forEach(jsonRepresentation.objects, function (obj) {
canvas.add(obj);
}
canvas.renderAll();
这也不起作用并导致对象不绘制但单击 CANVAS 会导致错误:
TypeError: Object #<Object> has no method 'setupState'
知道会发生什么吗?
应用程序非常复杂,所以我不确定 fiddle/plunkr 是否可行。
对象确实有自定义属性,但我确保修改 toObject 方法原型如下:
fabric.Object.prototype.toObject = (function (toObject) {
return function () {
return fabric.util.object.extend(toObject.call(this), {
customAttribute1: this.customAttribute1,
...
});
};
})(fabric.Object.prototype.toObject)
为了使这些属性持久化(它们是在手动扫描生成的 JSON 之后)。
更新:
我注意到问题的出现是因为我的许多对象内部都有对象,这些对象没有被递归解析为 FabricJS 画布格式。我会继续调查。
【问题讨论】:
标签: javascript canvas fabricjs