0

やあみんな、私はこの問題に2日間立ち往生しています。私はこのコードのビットを機能させることができないようです: http://www.taffatech.com/Paint.html 3 つのドットを描画し、元に戻すを 2 回クリックすると、本来の動作が実行されるので、やりすぎないことを願っています。修理。ここにある「元に戻す」と「やり直し」の2つのボタンに関連付けられた元に戻すやり直しをしました:

-更新、これはもっと理にかなっていますか?私はそれが機能していることを除いて、2つを削除し、その後は通常1つずつ削除します

   function clearCanvas()
    {
    ctx.clearRect(0,0,canvasWidth,canvasHeight);

    }
   Stack1 = new Stack();
    ///////////////////

    function Stack() {
    var currentState = 0;
    var maxStates = 10;
     var stateArray = [];

var image = new Image();
image.id = "pic";
image.src = canvas.toDataURL();
stateArray.push(image);


    this.add = function() {
       var image = new Image();
image.id = "pic";
image.src = canvas.toDataURL();
stateArray.push(image);
currentState++;
    }

    this.undo = function () {



stateArray.pop();
currentState--;
clearCanvas();
var image = stateArray[curentState];
ctx.drawImage(image,0,0);

    }

    this.redo = function () {
    alert("worry about later");
       // if (stackIndex%stackSize == stackTop) return;
        //clearCanvas();
        //var tmpImg = new Image();
       // tmpImg.src = drawStack[++stackIndex%stackSize];
       // ctx.drawImage(tmpImg, 0, 0);
    }
} 
4

2 に答える 2

1

あなたのサイトでは、stackSize 変数が定義されていません。上に貼り付けたコードはわずかに異なります。リンクでは、スタック サイズが に渡されますfunction stack(。ただし、コンストラクターにサイズを渡しておらず、値は未定義です。

于 2013-06-17T22:02:11.617 に答える