2017-02-15 82 views
1

我使用fabricjs優秀的插件,「curvedText」從https://github.com/EffEPi/fabric.curvedText加載curvedText不再工作在fabricJS 1.7.3

這個偉大的工程,但是,最近的更新fabricjs已經渲染插件停止通過JSON加載。以下片段證明了這一點。

除了正在使用的fabricJS版本以外,以下兩個片段完全相同。

1.7.2版本:

$(function() 
 
{ 
 
    canvas = new fabric.Canvas('c'); 
 
    var CurvedText = new fabric.CurvedText('CurvedText', 
 
    { 
 
     left: 100,top: 20, 
 
     textAlign: 'center', 
 
     fill: '#0000FF',radius: 150, 
 
     fontSize: 20,spacing: 20 
 
    }); 
 
    canvas.add(CurvedText).renderAll(); 
 

 
    $('#save').click(function() { 
 
    \t var design = JSON.stringify(canvas.toJSON()); 
 
    canvas.clear(); 
 
    canvas.renderAll(); 
 
    canvas.loadFromJSON(design, function() { 
 
     console.log('loaded');  
 
     canvas.renderAll(); 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.2/fabric.js"></script> 
 
<script src="//cdn.rawgit.com/EffEPi/fabric.curvedText/master/fabric.curvedText.js"></script> 
 
<canvas id="c" width="400" height="160"></canvas><br/> 
 
<button id="save">Save/Reload</button>

1.7.3版本:

$(function() 
 
{ 
 
    canvas = new fabric.Canvas('c'); 
 
    var CurvedText = new fabric.CurvedText('CurvedText', 
 
    { 
 
     left: 100,top: 20, 
 
     textAlign: 'center', 
 
     fill: '#0000FF',radius: 150, 
 
     fontSize: 20,spacing: 20 
 
    }); 
 
    canvas.add(CurvedText).renderAll(); 
 

 
    $('#save').click(function() { 
 
    \t var design = JSON.stringify(canvas.toJSON()); 
 
    canvas.clear(); 
 
    canvas.renderAll(); 
 
    canvas.loadFromJSON(design, function() { 
 
     console.log('loaded');  
 
     canvas.renderAll(); 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.3/fabric.js"></script> 
 
<script src="//cdn.rawgit.com/EffEPi/fabric.curvedText/master/fabric.curvedText.js"></script> 
 
<canvas id="c" width="400" height="160"></canvas><br/> 
 
<button id="save">Save/Reload</button>

的1.7.2。版本工作正常,1.7.3。版本不。保存過程看起來很好,但是當加載JSON時似乎沒有任何事情發生。

綜觀1.7.3(https://github.com/kangax/fabric.js/releases/tag/v1.7.3)的發行說明似乎更改:

「改進:更好的錯誤同治在loadFromJSON#3586」

...可能負責。有任何想法嗎?

附加

沒有控制檯錯誤和網絡錯誤。如上所述,除了所用織物的版本之外,腳本是相同的。我所說的JSON是從織物本身產生的。這允許設計被保存和加載。點擊保存/重新載入按鈕生成JSON,然後重新載入(作爲測試)。加載JSON包含curvedText項目時加載機制中斷。沒有消息以任何方式呈現。

+0

控制檯中的任何錯誤? 1.7.2中的任何棄用警告?也不要迂腐,但你可以更清楚地概述問題嗎?當你說停止加載JSON ..你的意思是? Chrome窗口中的網絡選項卡失敗?\ AND您輸入的兩個代碼示例是否相同?如果是這樣,刪除一個,因爲比較需要時間..我注意到沒有區別..編輯:這兩個'代碼運行'工作相同.. – Pogrindis

+0

@Pogrindis請參閱編輯。 –

回答

2

好的,終於找到fabric.curvedText.js的錯誤。那麼,fabricjsenlivenObjects函數中的代碼已從1.7.2更改爲。到1.7.3。導致curvedText對象停止加載。

如果一個人改變在fabric.CurvedText的fromObject代碼:

fabric.CurvedText.fromObject=function (object) 
{ 
    return new fabric.CurvedText(object.text, clone(object)); 
}; 

這樣:

fabric.CurvedText.fromObject=function (object, callback) 
{ 
    var newObject = new fabric.CurvedText(object.text, clone(object)); 
    if(typeof callback !== "undefined") 
     callback(newObject, false); 
    else 
     return(newObject); 
}; 

然後加載將現在的工作。希望這可以幫助別人!

+1

謝謝!你救了我的一天! – dtx