問題があります。ページで元に戻すをクリックすると、キャンバスのサイズが小さくなりますか? ページに移動し、いくつか描画し、[元に戻す] をクリックして、何も表示されなくなるまで繰り返すと、問題が表示されます。すべてが画像のサイズ変更のように動きますか? currentState 変数に何か問題があるに違いないと思いますが、コードは頭の中で理にかなっているので、何が問題なのかわかりません。
http://www.taffatech.com/Paint.html これが私のコードです:
function clearCanvas()
{
ctx.clearRect(0,0,canvasWidth,canvasHeight);
}
Stack1 = new Stack();
///////////////////
function Stack() {
var currentState = -1;
var maxStates = 10;
var stateArray = [];
currentState++;
var image = new Image();
image.id = "pic";
image.src = canvas.toDataURL();
stateArray.push(image);
this.add = function() {
currentState++;
var image = new Image();
image.id = "pic";
image.src = canvas.toDataURL();
stateArray.push(image);
}
this.undo = function () {
if(currentState > 0)
{
currentState--;
//stateArray.pop();
clearCanvas();
var image = stateArray[currentState];
ctx.drawImage(image,0,0);
}
}
this.redo = function () {
alert("Unfinished");
//maybe have another array?
}
}