2011-02-25 7 views
1

私はうまくいくように見えますが、実際にはそうではないクリアボタンがあります。キャンバスをクリックすると、図面が表示されます。キャンバスをクリアすると、古いコンテンツが次の描画に再び表示されます

+0

あなたが設定しているもの:canvas.width = canvas.width これはタイプミスですか?もしそうでなければ、それはあなたの問題かもしれません。 – Wipqozn

+0

Canvas.width = canvas.widthは、IE9でクリアされません。 – scrappedcola

+0

しかし、すべてのブラウザがクリアすることはできません(特にSafari)。 'clearRect()'の使用は正しいです。 – Phrogz

答えて

2

キャンバスをクリアする方法に問題はありません。問題はあなたのロジックにあります。

毎回あなたclickまたはアレイ座標clickXclickYclickDragに移入addClickメソッドが呼び出され、マウスを移動させます。 canvasの点をプロットするredrawメソッドが呼び出されます。

canvasをクリアすると、これらの配列をリセットできないため、再度redrawメソッドを呼び出すと(キャンバスを消去した後)、古いポイントもプロットされます。

ので、以下に示すように配列clickXclickYclickDragを空にしようとする明確なごcanvas。新鮮なものを始めるときに古いポイントは考慮されません。

clickX = []; 
clickY = []; 
clickDrag = []; 
+0

キャンバスを '再描画 'する前にキャンバスをクリアしないと、同じ座標を繰り返し描画することになります。再描画時にキャンバスをクリアし、 'Clear'ボタンが押されたときだけ配列をリセットするほうがいいです。 –

+0

ありがとうございます。さらに、redraw()からclearCanvas()を削除しました。それは今働く。 – dragonfly

+0

複数の色を扱っている場合、この方法は機能しません。マウスをクリックするか画面をタッチすると、キャンバス全体がすぐに再表示されます。 –