z-indexを使用して互いに重なり合う2つのキャンバスがあります。
しかし、私はそれらに奇妙な問題を抱えています。下のキャンバスであるキャンバスに描画すると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/