gpt4 book ai didi

javascript - Fabric js 使用自定义属性扩展到对象,丢失默认属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:07 25 4
gpt4 key购买 nike

在发布这篇文章之前,我一直在这里和许多其他地方进行查找,但我可以充分发挥它的作用。

我所需要的只是能够在所有形状中保存一些自定义属性。这些属性是:uuid 和 rt_attributes。

因此,按照手册我添加了这段代码:

 fabric.Object.prototype.toObject = (function(toObject) {
console.log(toObject)
return function() {
return fabric.util.object.extend(toObject.call(this), {
uuid: this.uuid,
rt_attributes: this.rt_attributes
});
};
})(fabric.Object.prototype.toObject);

在某种程度上确实可以正常工作。

当我在 json 中序列化并加载回来时,问题就来了。自定义属性在 中,但像 IText 这样的形状会引发异常,例如:

fabric.js:22199 Uncaught TypeError: Cannot read property 'split' of undefined

查看转储的 json,我可以看到 .text 属性未导出。所以我担心重写 toObject 会丢失默认对象的一些自定义属性。

当然,我可以在我的 toObject 函数中重新定义它,但我认为

fabric.util.object.extend

我会这样做的。

有人可以指出我做错了什么吗?谢谢。

附注这是结果 json 的片段:

{"type":"i-    text","originX":"left","originY":"top","left":29,"top":677,"width":107,"height":22.6,"fill":"rgba(255,255,255,1)","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeLineJoin":"miter","strokeMiterLimit":10,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"uuid":"04af6ab4-4eb1-432b-f46a-93b11a92292d","rt_attributes":[["fontFamily","text"],["fontSize","int"],["fill","color"],["opacity","float"],["top","int"],["left","int"]],"styles":{}},

如您所见,没有文本字段。但是 uuid 和 rt_attributes 都在里面。

最佳答案

终于找到正确的方法了:

fabric.Object.prototype.toObject = (function (toObject) {
return function (propertiesToInclude) {
propertiesToInclude = (propertiesToInclude || []).concat(
['uuid','rt_attributes']
);
return toObject.apply(this, [propertiesToInclude]);
};
})(fabric.Object.prototype.toObject);

关于javascript - Fabric js 使用自定义属性扩展到对象,丢失默认属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41286547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com