javascript - 使用clearRect时无法在 Canvas 上绘制多个形状

标签 javascript html canvas

当我在绘制所有对象之前使用 ctx.clearRect 时,仅绘制最后一个对象(使用更新的 chrome 和 firefox)。 一切都是在没有clearRect的情况下绘制的。

//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);
    }
}

最佳答案

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

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

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

关于javascript - 使用clearRect时无法在 Canvas 上绘制多个形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44371705/

相关文章:

jquery - 带有嵌套 div 的不稳定 slidetoggle jquery 行为

javascript - 确定两个圆相交的点和 Angular 。

javascript - 防止后期数据伪造

javascript - Android:未捕获类型错误:对象函数数组(){[ native 代码]}没有方法 'from'

javascript - 使用 Web Audio API 播放录制的音频 block

javascript - 图像 slider 在 eBay 中未正确显示

jquery - 通过电线将 Canvas 复制到 Canvas

javascript - 如何防止 Canvas 在移动设备上表现得像图像?

javascript - ASP.NET Core 2.1 - PWA(Banner提示被取消)

javascript - 迭代对象数组时返回 false 或 true