HTML5画布未清除

HTML5画布未清除,html,canvas,Html,Canvas,我正在用各种可能的方法清理画布,但运气不好。当我在画布上单击“上一步”时,所有以前的图形都会重新出现 这是代码 function clearCanvas() { //clickX = []; //clickY = []; //clickDrag = []; //context.clearRect(0, 0, canvas.width, canvas.height); //curColor = colorBlack; //redraw();

我正在用各种可能的方法清理画布,但运气不好。当我在画布上单击“上一步”时,所有以前的图形都会重新出现

这是代码

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();

};

在我看来,您正在使用数组存储图形信息。 我知道您已经尝试过清除它们,但是,据我所知,最好的清除方法是将长度设置为零。试试这个:

function clearCanvas() {
clickX.length = 0;
clickY.length = 0;
clickDrag.length = 0;
context.clearRect(0, 0, canvas.width, canvas.height);
};
如果没有清除(并且您没有错误),那么

  • 未输入您的
    clearCanvas()
    方法,或者
  • 调用
    clearCanvas()
    后,您将在画布上重新绘制
  • 抱歉,这是我从可用信息中得到的最好信息:p你说“只要我在画布上单击后退”。这是否意味着在单击画布之前,画布最初处于清除状态?然后这就告诉我,您有一个事件处理程序,它将在单击时重新绘制所有内容

    此外,请确认您的上下文仍指向正确的画布。
    一些画布解决方案需要创建临时画布。如果你已经这样做了,那么也许你正在清除错误的上下文。否则,我看不出context.clearRect为什么不能像您现在这样工作。

    试试
    context.clearRect(0,0,canvas.width,canvas.height)
    ?这到底是如何调用的?我试过了,这就是为什么我在代码中包含了所有可能的组合。请参阅注释掉的代码。代码是从一个按钮调用来清除画布的。我不认为这仅仅是因为你发布的代码。这些方法确实有效,你找到解决办法了吗??如果你愿意,请分享,我也面临同样的问题。谢谢。它会清除画布,但当我选择一种不同的颜色来绘制时,直到我绘制一段时间后,它才会选择新的颜色。非常奇怪的行为。下面是我选择颜色的代码:函数setColorWhite(){curColor=colorWhite;redraw();};如何存储颜色信息?或者改变颜色是否会改变屏幕上所有线条的颜色?”因为信息有限,我所能想象的是,如果你在一个数组中有你的颜色,而这个数组没有在clearcanvas函数中被清除,它会画,比如说,100点作为以前的颜色,当它用完点时,它会切换到你的新颜色。在我的Javascript函数中,我只是将它声明为colorBlack=“#000000”,clickColor=new Array(),…我是否也应该重置clickColor?是的,请查看您的redraw()函数,它用于在画布上绘制的所有数组都必须重置,否则在添加新信息之前,它将遍历所有具有旧信息的数组。