2013-08-29 16 views
7

W pliku Fabric.js mamy zdarzenia zmodyfikowane obiektowo, takie jak obiekt: zmodyfikowany. Czy mamy podobne wydarzenie dla całego płótna?Czy mamy zmodyfikowane wydarzenie canvas w Fabric.js?

Właściwie próbuję zaimplementować funkcje cofania i ponawiania. Zachowuję płótno jako JSON, jeśli coś się na nim dzieje i ładuję je ponownie w celu cofnięcia operacji.

Czy mamy jakieś lepsze rozwiązanie dla tej funkcji w Fabric.js?

+0

Jak można się spodziewać, że to wydarzenie różni się od "obiektu: zmodyfikowane"? "object: modifed" obejmuje wszystkie przypadki modyfikacji na płótnie, ponieważ każda modyfikacja implikuje zmianę obiektu (z wyjątkiem czegoś w rodzaju koloru tła w tle, ale zazwyczaj nie powinno to być częścią cofania/ponawiania) – kangax

+0

Kiedy dodajemy nowe obiekty do płótna obiekt: zmodyfikowane zdarzenie nie uruchamia się. Wystrzeliwuje tylko wtedy, gdy wykonujemy modyfikacje (skalowanie, obracanie itp.) Na dowolnym dodanym obiekcie. – user2571818

+3

Możesz użyć "object: added" i/lub "object: removed" dla tego - http://fabricjs.com/events/ – kangax

Odpowiedz

0

Jest to lepiej wyjaśnione w tym link. Użyj go w ten sposób:

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

Nie zapomnij sprawdzić również dla dodanych/usuniętych obiektów. Można to zaimplementować w następujący sposób:

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

canvas.on('object:added', canvasModifiedCallback); 
canvas.on('object:removed', canvasModifiedCallback); 
canvas.on('object:modified', canvasModifiedCallback); 
Powiązane problemy