我的画布包含centeredRotation:true
的对象和selectable:false
的其他对象
当我将此画布转换为JSON并重新加载它时。对象具有默认属性。
即没有居中的旋转和物体是可选择的。
我可以知道为什么会这样吗?
显然,像centerRotation,selectable这样的属性不包含在JSON中。
{"类型":" RECT"" originX":"左"" originY":& #34;顶部""左" 92"顶部":53,"宽度":150,"高度&#34 ;: 150,"填充":"#778899""中风":空," strokeWidth":1," strokeDashArray&#34 ;:空," strokeLineCap":"对接"" strokeLineJoin":"斜切"" strokeMiterLimit":10 "将scaleX":1,"的scaleY":1,"角":0," flipX":假," flipY& #34;:假,"不透明度":0.4,"阴影":无效,"可见":真," clipTo":无效, "的backgroundColor":""" RX":0," RY":0," X":0 " Y":0}],"背景":""}
如何在加载对象时设置这些?
答案 0 :(得分:8)
您需要在toJSON
期间加入它们:
canvas.toJSON([ 'centeredRotation', 'selectable' ]);
请参阅描述此“propertiesToInclude”参数的documentation for toJSON
,并提供一些示例。
答案 1 :(得分:0)
您还可以在创建新对象之前在主对象上指定此项。这保证了我下次从json加载一个对象时,selectable将被保存在" toObject" /" toJSON"功能
// Add 'selectable' to every object via the main class "Object"
fabric.Object.prototype.toObject = (function (toObject) {
return function () {
return fabric.util.object.extend(toObject.call(this), {
selectable: this.selectable
});
};
})(fabric.Object.prototype.toObject);
我不明白为什么默认情况下不会出现这种情况,但我想这是因为它更像是一个州与财产?