我已經用fabricjs成功地在子組中劃分了子組,但是在嘗試對Line對象進行子類化時,我遇到了各種與toObject()
方法有關的問題。FabricJS:Sub Classing fabric.Line and toObject error
目前我的代碼看起來是這樣的:
fabric.ConnectorLine = fabric.util.createClass(fabric.Line, {
initialize: function (points, options) {
options || (options = {});
this.callSuper('initialize', points, options);
options &&
this.set('type', 'connector') &&
this.set('end1', options.end1) &&
this.set('arrow', options.arrow)
},
toObject: function() {
return fabric.util.object.extend(this.callSuper('toObject'), {
type: this.type,
end1: this.end1,
arrow: this.arrow
});
}
});
fabric.ConnectorLine.fromObject = function (object, callback) {
var _enlivenedObjects;
fabric.util.enlivenObjects(object.objects, function (enlivenedObjects) {
delete object.objects;
_enlivenedObjects = enlivenedObjects;
});
return new fabric.ConnectorLine(_enlivenedObjects, object);
};
當我嘗試序列化這個對象,我收到以下錯誤信息:
RangeError: Maximum call stack size exceeded
at klass.callSuper (fabric.js:1475:30)
at klass.fabric.Line.fabric.util.createClass.toObject (fabric.js:13632:26)
是否有你需要的做一些特別的東西toObject
方法與行(Rect和Triangle似乎也有同樣的問題)?
剛剛完成了我的頭,所以任何幫助是最讚賞。
UPDATE 1:的jsfiddle加入
下面是一個基本實例的的jsfiddle。您可以在線路124看到的,125我增加了線條的引用結束,箭頭連接到:
arrow.line = line;
end.line = line;
正是這種引用,當您嘗試序列(檢查控制檯)拋出的錯誤:
http://jsfiddle.net/iamadamjowett/zL5k0zx3/29/
+1試試添加一個JSFiddle的例子 – InferOn 2014-09-04 09:20:49
@wintermute我剛剛加了,看到上面的編輯 – 2014-09-05 00:15:11
你的序列化代碼落在無限遞歸中,這個語句** end.line = line; **是負責任的, end.line點到線,但line.end點結束 – InferOn 2014-09-05 10:26:45