2013-08-29 30 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); 
相关问题