2012-02-24 6 views
0

私はここで何が間違っていますか?キャンバスをクリアして画像を再読み込みしますか?

私はcanvsにhtml5イメージタグを使ってイメージを書いています。 新しい画像の最後の画像をクリックしてください。 画像を読み込むことはできますが、次の画像をクリックすると最後に読み込まれた画像と重なります。 ここにコードがあります。 私は試しています()関数を使用するには

  function drawImage(imageObj){ 

      var stage = new Kinetic.Stage("container", 578, 500); 
      var layer = new Kinetic.Layer(); 
      var x = stage.width/2 - 200/2; 
      var y = stage.height/2 - 137/2; 
      var width = 200; 
      var height = 137; 

      // darth vader 
      var darthVaderImg = new Kinetic.Shape(function(){ 
       var context = this.getContext(); 

       context.clearRect(x,y,width,height); 
       context.drawImage(imageObj, x, y, width, height); 
       // draw invisible detectable path for image 
       context.beginPath(); 
       context.rect(x, y, width, height); 
       context.closePath(); 


      }); 
+0

uはcanvas.width = canvas.widthを試してみました。 ???? – thecodejack

+0

これを試してみましたか... canvas.width = canvas.widthはキャンバス全体をクリアします。私はちょうど削除されるセクションが必要です。context.clearRect(x、y、width、height)それはここでも働いていません。 – ashishashen

答えて

1

これをチェックするpost

canvas.width = canvas.width; 

キャンバスをクリアする必要があります。

+0

これを試してみましたか... canvas.width = canvas.widthはキャンバス全体をクリアします。私はちょうどセクションを削除したいと思います。context.clearRect(x、y、width、height)それはまたここで働いていない – ashishashen

+0

この[ポスト](http://stackoverflow.com/questions/2142535/how-to-clear-the-canvas-for-redrawing)の2番目の答えをお読みですか? clearRect()でクリーニングが完了したら、コンテキストを保存して復元してください。 – cago

+0

ねえ、私はすでにそれを取得しています。私のkinetic.jsファイルは古くなっています...それを更新し、クリアキャンバスの機能が追加されました。おかげで...とにかく:) – ashishashen

0

使用私はこのようにそれを呼び出し

を作成し、この機能 - clearCanvasGrid(/id of the canvas/)

function clearCanvasGrid(canvasname){ 
      var canvas = document.getElementById(canvasname); //because we are looping //each location has its own canvas ID 
      var context = canvas.getContext('2d'); 
      //context.beginPath(); 

      // Store the current transformation matrix 
      context.save(); 

      // Use the identity matrix while clearing the canvas 
      context.setTransform(1, 0, 0, 1, 0, 0); 
      context.clearRect(0, 0, canvas.width, canvas.height); 

      // Restore the transform 
      context.restore(); //CLEARS THE SPECIFIC CANVAS COMPLETELY FOR NEW DRAWING 

     } 
関連する問題