我正在尋找一種方法來擴展基本fabric.Object類與自定義屬性我可以保存到JSON和從JSON加載,將傳播到各種子類。在Fabric.js中,如何修改對象類,以便所有子類都具有新的自定義屬性?
具體而言,我想存儲一個深度屬性,所以當我從JSON加載對象時,我將能夠添加適當的視差到對象。
我想解決方案將包括修改fabric.Object.prototype。但我仍然在學習如何使用原型。
這裏是什麼,我已經嘗試了一些例子: http://www.sitepoint.com/fabric-js-advanced/
// create a rectangle object
var rect = new fabric.Rect({
left: 100,
top: 100,
fill: 'red',
width: 20,
height: 20
});
rect.toObject = (function (toObject) {
return function() {
return fabric.util.object.extend(toObject.call(this), {
depth: 10
});
};
})(rect.toObject);
這確實在給特定的對象「矩形」所需的屬性,以及使其可在toJSON()
方法非常出色。但它不能使它適用於所有對象,並且當我使用loadFromJSON()
時,它不包含新屬性。
任何幫助,將不勝感激!
這讓我更接近解決方案的其他資源:
Fabric.js - how to save canvas on server with custom attributes
- 創建一個子類與自定義屬性,但沒有從它繼承。
https://github.com/kangax/fabric.js/wiki/Adding-additional-object-properties-to-serialized-JSON
- 完全重寫,以包括自定義屬性所需的方法(我寧願不修改fabricjs核心)
完美運作。謝謝!我結束了使用你的猴子補丁,因爲我可以操縱新的屬性並保存它們。 – payne8
在這個例子中,如何將一個參數傳遞給'foobar'? –
fabric.Object.prototype.toObject =(函數(toObject){ 回報函數(){ 返回fabric.util.object.extend(toObject.call(本),{ 動畫:this.anim }); }; })(fabric.Object.prototype.toObject); –