2013-08-29 97 views
7

在Fabric.js中,我們有Object修改的事件,如object:modified。我們是否對整個畫布有類似的事件?我們是否在Fabric.js中有畫布修改事件?

其實我試圖實現撤消和重做功能。如果發生了某些情況並將其重新加載以用於撤消功能,我將它保存爲JSON。

在Fabric.js中,我們有更好的解決方案嗎?

+0

你如何期待這個事件不同於「object:modified」? 「object:modifed」涵蓋了所有在畫布上進行修改的情況,因爲任何修改都意味着對象更改(除了畫布背景顏色之外,但通常不應該是撤消/重做的一部分) – kangax

+0

當我們向畫布添加任何新對象時對象:修改的事件不會觸發。它只在我們對任何添加的對象執行修改(縮放,旋轉等)時觸發。 – user2571818

+3

您可以使用「對象:已添加」和/或「對象:已刪除」 - http://fabricjs.com/events/ – kangax

回答

0

這在這link更好地解釋。這樣使用:

canvas.on('object:moving', function(e) { // or 'object:added' 
    var activeObject = e.target; 
    console.log(activeObject.get('left'), activeObject.get('top')); 
}); 
0

不要忘記檢查添加/刪除的對象了。你可以這樣實現:

var canvasModifiedCallback = function() { 
console.log('canvas modified!'); 
}; 

canvas.on('object:added', canvasModifiedCallback); 
canvas.on('object:removed', canvasModifiedCallback); 
canvas.on('object:modified', canvasModifiedCallback);