我有两个画布,它们采用z-index叠放在一起。
但是我遇到了一个奇怪的问题:当我向位于下层的画布上绘制内容时,下层画布上的任何内容都会被清除。
这是我的做法:
CSS:
.c {
position: absolute;
left: 0;
top: 0;
width: 100 % ;
height: 500px;
margin: 0 auto;
border: 1px solid red;
}
JavaScript:
window.canvas = new Object();
for (var i = 1; i < 3; i++) {
document.getElementById("G").innerHTML += '<canvas id="layer' + i + '" class="c" style="z-index:' + i + ';" oncontextmenu="return false;"></canvas>';
temp = document.getElementById('layer' + i);
objname = 'canvas' + i;
canvas[objname] = temp;
canvas[objname].ctx = temp.getContext("2d");
}
function draw() {
canvas.canvas1.ctx.clearRect(0, 0, settings.width, settings.height);
canvas.canvas2.ctx.clearRect(0, 0, settings.width, settings.height);
abposx = 50;
abposy = 50;
//doesn't draw
canvas.canvas1.ctx.drawImage(gfx['ground'][0], abposx, abposy);
//draws
canvas.canvas2.ctx.drawImage(gfx['building'][0], abposx + 120, abposy + 120);
}
在上面的示例中,我只看到绘制了
canvas2
,如果我完全删除该canvas,则会看到绘制了canvas1
,如果将这两个图像都绘制到同一个画布the same
中,则两个图像也会显示出来。但是,如果我将其中一个绘制到
canvas1
,另一个绘制到canvas2
,那么我只能看到在canvas2
上绘制的内容,而且canvas1
似乎被擦除了。为什么会这样?我不知道是否有其他人尝试过这种情况,但这让人感到烦恼!我无法解决这个问题!建议/修复方法非常感谢。
带有问题的JSfiddle链接:http://jsfiddle.net/xJZrQ/18/
innerHTML
和+=
。永远不要这样做。https://dev59.com/UHE95IYBdhLWcg3wdtmj#2305677 - Bergi