Я пытаюсь добавить функциональность отмены/повтора к моему холсту FabricJs. Моя идея - иметь счетчик, который учитывает модификации холста (прямо сейчас он подсчитывает добавление объектов). У меня есть массив состояний, который подталкивает весь холст как JSON к моему массиву.
Затем я просто хочу вспомнить состояния с
canvas.loadFromJSON(state[state.length - 1 + ctr],
Когда пользователь нажимает на отмену, ctr уменьшает на единицу и загружает состояние из массива; как пользователь нажимает на повтор, ctr будет увеличиваться на единицу и загружать состояние из массива.
Когда я испытываю это с помощью простых чисел, все работает нормально. С реальным холстом ткани, я получаю некоторые проблемы → он действительно не работает. Я думаю, что это зависит от моего обработчика событий
canvas.on({
'object:added': countmods
});
jsfiddle находится здесь:
вот пример рабочих чисел (результаты см. в консоли): jsFiddle