差分スタイルの履歴ではなく、変更履歴を作成しようとしています。オブジェクト全体を保存することを選択しました。オブジェクトの各コピーが元のオブジェクトと一緒に更新されるため、これは問題になります。
この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();
};
};
ステージの正確なコピーを作成するにはどうすればよいですか?