私はうまくいくように見えますが、実際にはそうではないクリアボタンがあります。キャンバスをクリックすると、図面が表示されます。キャンバスをクリアすると、古いコンテンツが次の描画に再び表示されます
答えて
キャンバスをクリアする方法に問題はありません。問題はあなたのロジックにあります。
毎回あなたclick
またはアレイ座標clickX
、clickY
とclickDrag
に移入addClick
メソッドが呼び出され、マウスを移動させます。 canvas
の点をプロットするredraw
メソッドが呼び出されます。
canvas
をクリアすると、これらの配列をリセットできないため、再度redraw
メソッドを呼び出すと(キャンバスを消去した後)、古いポイントもプロットされます。
ので、以下に示すように配列clickX
、clickY
とclickDrag
を空にしようとする明確なごcanvas
。新鮮なものを始めるときに古いポイントは考慮されません。
clickX = [];
clickY = [];
clickDrag = [];
キャンバスを '再描画 'する前にキャンバスをクリアしないと、同じ座標を繰り返し描画することになります。再描画時にキャンバスをクリアし、 'Clear'ボタンが押されたときだけ配列をリセットするほうがいいです。 –
ありがとうございます。さらに、redraw()からclearCanvas()を削除しました。それは今働く。 – dragonfly
複数の色を扱っている場合、この方法は機能しません。マウスをクリックするか画面をタッチすると、キャンバス全体がすぐに再表示されます。 –
あなたが設定しているもの:canvas.width = canvas.width これはタイプミスですか?もしそうでなければ、それはあなたの問題かもしれません。 – Wipqozn
Canvas.width = canvas.widthは、IE9でクリアされません。 – scrappedcola
しかし、すべてのブラウザがクリアすることはできません(特にSafari)。 'clearRect()'の使用は正しいです。 – Phrogz