Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用clearRect时无法在画布上绘制多个形状_Javascript_Html_Canvas - Fatal编程技术网

Javascript 使用clearRect时无法在画布上绘制多个形状

Javascript 使用clearRect时无法在画布上绘制多个形状,javascript,html,canvas,Javascript,Html,Canvas,当我在绘制所有对象之前使用ctx.clearRect时,只绘制最后一个对象(使用更新的chrome和firefox)。 一切都画得不清晰 //in interval for(var i = 0;i<objects.length;i++){ ctx.clearRect(0, 0, canvas.width, canvas.height); objects[i].draw(); } function drawRect(x,y,w,h,fill){ if(fil

当我在绘制所有对象之前使用ctx.clearRect时,只绘制最后一个对象(使用更新的chrome和firefox)。 一切都画得不清晰

//in interval    
for(var i = 0;i<objects.length;i++){
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    objects[i].draw();
}

function drawRect(x,y,w,h,fill){
    if(fill)
        ctx.fillRect(x-camera.x,y-camera.y,w,h);
    else
        ctx.strokeRect(x-camera.x,y-camera.y,w,h);
}

function square(pos,size){
    object.call(this);
    this.pos = pos;
    this.size = size;
    this.draw = function(){
        drawRect(this.pos.x,this.pos.y,this.size.x,this.size.y);
    }
}
//在间隔中

对于(var i=0;i您需要将
clearRect
方法调用移出循环体:

ctx.clearRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < objects.length; i++) {
    objects[i].draw();
}
ctx.clearRect(0,0,canvas.width,canvas.height);
对于(var i=0;i

否则,您将在每次循环迭代开始时清除画布-这将导致清除除最后一个对象之外的所有对象。

您需要将
clearRect
方法调用移出循环体:

ctx.clearRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < objects.length; i++) {
    objects[i].draw();
}
ctx.clearRect(0,0,canvas.width,canvas.height);
对于(var i=0;i

否则,您将在每次循环迭代开始时清除画布-这将导致清除除最后一个对象之外的所有对象。

我现在觉得很愚蠢,感谢您的响应anyway@eim64喝杯咖啡休息一下:)-如果你对问这个问题感到羞愧,我不介意删除这个答案;)我现在觉得自己很愚蠢,谢谢你的回答anyway@eim64喝杯咖啡休息一下:)-如果你对问这个问题感到羞愧,我不介意删除这个答案;)