【发布时间】:2012-11-27 11:41:46
【问题描述】:
我有两个使用 z-index 相互重叠的画布。
但是我遇到了一个奇怪的问题:当我在下面的画布上绘制 above 时,在下面的画布上绘制的内容会被擦除。
这就是我的做法:
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 被绘制,如果我一起移除那个画布,我会看到canvas1 被绘制。如果我将这两个图像都绘制到 the same 画布上,这两个图像也会显示。
但是,如果我将一个绘制到canvas1,另一个绘制到canvas2,我只能看到canvas2 上绘制的内容,而canvas1 似乎已被删除。
为什么会这样?我不知道这是否被其他人复制,但它越来越烦人了!我无法解决问题!非常感谢您的想法/建议/修复。
JSfiddle 解决这个问题:http://jsfiddle.net/xJZrQ/18/
【问题讨论】:
-
你为什么要在两幅画布上作画?另外,能否提供一个 JSFiddle 示例?
-
@eicto jsfiddle.net/xJZrQ/18 它根本不想在 jsfiddle 上为我画画。
-
再次编辑链接检查。
-
你是个天才!假设您的回答解决了问题:P 我会等待! :)
-
不要将
innerHTML与+=一起使用。绝不。 stackoverflow.com/a/2305677/1048572
标签: javascript html dom canvas