Html 清除画布会使旧内容重新出现在下一个绘图上

Html 清除画布会使旧内容重新出现在下一个绘图上,html,canvas,Html,Canvas,我有一个清晰的按钮,看起来很有效,但实际上不行。当我在画布上单击后退时,我可以看到绘图。清除画布的方式没有问题,问题在于逻辑 每次单击或移动鼠标时,都会调用addClick方法,该方法使用坐标填充数组clickX、clickY和clickDrag;然后调用redraw方法,在画布上绘制点 因此,当您清除画布时,无法重置这些数组,因此当再次调用重画方法时(清除画布后),也会绘制旧点 因此,当您清除画布时,请尝试清空数组clickX、clickY和clickDrag,如下所示;这样,当你重新开始时,

我有一个清晰的按钮,看起来很有效,但实际上不行。当我在画布上单击后退时,我可以看到绘图。

清除画布的方式没有问题,问题在于逻辑

每次
单击
或移动鼠标时,都会调用
addClick
方法,该方法使用坐标填充数组
clickX
clickY
clickDrag
;然后调用
redraw
方法,在
画布上绘制点

因此,当您清除
画布
时,无法重置这些数组,因此当再次调用
重画
方法时(清除画布后),也会绘制旧点

因此,当您清除
画布时,请尝试清空数组
clickX
clickY
clickDrag
,如下所示;这样,当你重新开始时,旧的观点就不会被考虑

clickX = [];
clickY = [];
clickDrag = [];

您正在设置:canvas.width=canvas.width这是打字错误吗?如果不是,那可能是你的问题。没有canvas.width=canvas.width可以让IE9清除。但不是所有浏览器都可以清除(特别是Safari)。使用
clearRect()
是正确的。我无法查看源atm(iPhone),但很明显,您实际上没有正确地关闭和开始路径。这就是为什么笔划将“保留”先前绘制的信息。“清除”按钮显然在工作,但清除后重新绘制了以前的路径。@Phrogz我检查了所有开始和结束路径。我没有漏掉任何一个。如果你在重新绘制之前不清除画布,它将一次又一次地在相同的坐标上绘制。最好只在重画时清除画布,并仅在按下
clear
按钮时重置阵列。谢谢。此外,我还从redraw()中删除了clearCanvas()。现在可以使用了。当您使用多种颜色时,此方法不起作用。当您单击鼠标或触摸屏幕时,整个画布立即重新出现。@CodeToGlory哪种方法?这个答案解决了蜻蜓的具体问题。