4

キャンバスをクリアするためにあらゆる方法を使用していますが、うまくいきません。キャンバスをクリックして戻すと、以前のすべての描画が再び表示されます。

これがコードです。

function clearCanvas() {

    //clickX = [];
    //clickY = [];
    //clickDrag = [];
    //context.clearRect(0, 0, canvas.width, canvas.height);

    //curColor = colorBlack;
    //redraw();

    //clickX = new Array();
    //clickY = new Array();
    //clickDrag = new Array();

    context.fillStyle = '#faebd7'; 
    context.fillRect(0, 0, canvas.width, canvas.height); 
    canvas.width = canvas.width; 
    //context.beginPath();

};
4

3 に答える 3

2

私には、配列を使用して描画情報を保存しているようです。それらをクリアしようとしているようですが、私の知る限り、長さをゼロに設定するのが最善の方法です。これを試して:

function clearCanvas() {
clickX.length = 0;
clickY.length = 0;
clickDrag.length = 0;
context.clearRect(0, 0, canvas.width, canvas.height);
};
于 2012-10-05T00:03:54.410 に答える
1

クリアされていない(そしてエラーがない)場合は、次のいずれかです

  1. メソッドclearCanvas()が入力されていない、または
  2. 通話後にキャンバス上で再描画していますclearCanvas()

申し訳ありませんが、それは私が入手可能な情報で得た最高のものです:P

于 2012-10-05T02:18:21.393 に答える
1

「キャンバスをクリックするとすぐに」と言います。それは、キャンバスをクリックするまで、最初はキャンバスがクリアされているということですか? 次に、すべての onclick を再描画するイベント ハンドラーがあることを示しています。

また、コンテキストがまだ正しいキャンバスを指していることを確認してください。一部のキャンバスの回避策では、一時キャンバスを作成する必要があります。それを行った場合は、間違ったコンテキストをクリアしている可能性があります。そうしないと、 context.clearRect が機能しない理由がわかりません。

于 2012-10-05T07:32:46.640 に答える