网站搜索

javascript - 如何检测 canvas 的内容何时被更改?


我需要监控画布对象的变化(我正在使用 fabricjs 库)。

var canvas = this.__canvas = new fabric.Canvas('canvas', {isDrawingMode:true});
//I need to watch the changes here -> 
canvas.toJSON();

我尝试使用 Object.prototype.watch() 如下:

canvas.toJSON.watch('objects', function(){ //做某事});

但那对我没有用,有什么帮助吗?

答案#1

既然你的示例提到了 isDrawingMode:true,我认为你是在寻找一种方法来检测画布上的自由手绘模式绘图。

Fabric JS 提供了一个长长的事件列表,你可以在这里查看。

所以如果你想检测画布上的自由绘图,你可以使用 path:created 事件。

var canvas = new fabric.Canvas('canvas',{isDrawingMode:true});
canvas.on('path:created', function(event) {
    //log the svg path  info
   console.log(event.path.path);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.4/fabric.min.js"></script>
<canvas id="canvas" width="300" height="300"></canvas>

答案#2

画布会调用自身的事件,如本文件所述:类:Canvas,在这里你将看到画布触发的许多事件。

用于检查对象是否被修改的事件如下:

canvas.on('object:modified', function(event) {
    // the object that has been modified is in:
    event.target
})