2 回答
TA贡献1842条经验 获得超21个赞
Fabric Image 类具有稍微复杂的恢复机制,因为它需要在构造函数中使用不可序列化的图像元素。
这就是它在 FabricJS 中的实现方式:
/**
* Creates an instance of fabric.Image from its object representation
* @static
* @param {Object} object Object to create an instance from
* @param {Function} callback Callback to invoke when an image instance is created
*/
fabric.Image.fromObject = function(_object, callback) {
var object = fabric.util.object.clone(_object);
fabric.util.loadImage(object.src, function(img, isError) {
if (isError) {
callback && callback(null, true);
return;
}
fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {
object.filters = filters || [];
fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {
object.resizeFilter = resizeFilters[0];
fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {
object.clipPath = enlivedProps[0];
var image = new fabric.Image(img, object);
callback(image, false);
});
});
});
}, null, object.crossOrigin);
};
恐怕你必须复制它并将 Fabric.Image 与 Fabric.Icon 交换
TA贡献1826条经验 获得超6个赞
好吧,这并不是这个问题的真正解决方案,但我找到了区分在保存和加载过程中持续存在的对象的正确方法 - 通过覆盖其 toObject 方法来设置 Object.prototype 上的自定义属性,如下所示:Fabric js extends toObject with custom属性,丢失默认属性 问题解决!
添加回答
举报