我正在尝试构建更改历史记录,而不是差异样式历史记录,我选择保存整个对象。这变得有问题,因为对象的每个副本都与原始对象一起更新。
这种Kinetic.Node.clone
方法对我来说似乎是正确的,但它似乎并没有达到我期望的效果。
伪代码:
var History = function(){
var h = this;
h.history = [];
h.pointer = -1;
h.save = function() {
h.history = h.history.slice(0,h.pointer);
h.history.push(im.Stage.createCopy());
h.movePointer(1);
};
h.movePointer = function(diff) {
h.pointer += diff;
(h.pointer < 0 && (h.pointer = 0));
(h.pointer >= h.history.length && (h.pointer = h.history.length-1));
return h.pointer;
};
h.render = function() {
im.Stage = h.history[h.pointer].createCopy();
im.Stage.draw();
};
h.undo = function() {
h.movePointer(-1);
h.render();
};
h.redo = function() {
h.movePointer(1);
h.render();
};
};
如何创建舞台的准确副本?