Is it possible to set the z-index of a drawn object in HTML5 canvas?
I am trying to get it so one object can be infront of a the "player" and another object is behind the "player"
Yes..kind of yes. You can use globalCompositeOperation to "draw behind" existing pixels.
ctx.globalCompositeOperation='destination-over';
Here's an example and a Demo:
var canvas=document.getElementById("canvas"); var ctx=canvas.getContext("2d"); var cx=100; drawCircle() cx+=20; ctx.globalCompositeOperation='destination-over'; $("#test").click(function(){ drawCircle(); cx+=20; }); function drawCircle(){ ctx.beginPath(); ctx.arc(cx,150,20,0,Math.PI*2); ctx.closePath(); ctx.fillStyle=randomColor(); ctx.fill(); } function randomColor(){ return('#'+Math.floor(Math.random()*16777215).toString(16)); }
body{ background-color: ivory; } canvas{border:1px solid red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <button id="test">Draw new circle behind.</button><br> <canvas id="canvas" width=300 height=300></canvas>
2.1m questions
2.1m answers
60 comments
57.0k users