从Fabric.js中的JSON加载加载默认属性

时间:2013-10-18 08:18:20

标签: fabricjs

我的画布包含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}],"背景":""}

如何在加载对象时设置这些?

2 个答案:

答案 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);

我不明白为什么默认情况下不会出现这种情况,但我想这是因为它更像是一个州与财产?