I'm new to canvas, can you any answer for my problem
I'm using two canvas layer, top layer canvas (Blue rectangle) and bottom layer canvas (greyBall). greyBall move randomly and blueRectangle static in some position.
I need to achieve,
user click the greyBall when it is behind blueRectangle and i need to stop greyball movement.
find code here
<section>
<div id="kanvas" style="position:relative; width:400px; height:300px">
<canvas id="layer1"
style="z-index: 1;position:absolute;left:0px;top:0px;" height="300px" width="400">
</canvas>
<canvas width="100" height="100" style="z-index: 2;pointer-events: none;position:absolute;left:50%;top:50%;" id="layer2">
</canvas>
</div>
<script type="text/javascript">
var layer1;
var layer2;
var ctx1;
var ctx2;
var x = 400;
var y = 300;
var dx = 2;
var dy = 4;
var WIDTH = 400;
var HEIGHT = 300;
function init() {
//city.src ="city.png";
layer1 = document.getElementById("layer1");
ctx1 = layer1.getContext("2d");
layer2 = document.getElementById("layer2");
ctx2 = layer2.getContext("2d");
//drawAll();
setInterval(drawAll, 0.5);
}
function drawAll() {
drawBall();
drawRectangle();
}
function drawBall() {
ctx1.clearRect(0, 0, WIDTH, HEIGHT);
ctx1.fillStyle = "#444444";
ctx1.beginPath();
ctx1.arc(x, y, 50, 0, Math.PI*2, true);
//ctx1.arc(x, y, 100, 0, Math.PI*2, true);
ctx1.closePath();
ctx1.fill();
if (x + dx > WIDTH || x + dx < 0)
dx = -dx;
if (y + dy > HEIGHT || y + dy < 0)
dy = -dy;
x += dx;
y += dy;
}
function drawRectangle() {
ctx2.clearRect(0, 0, WIDTH, HEIGHT);
ctx2.fillStyle = "blue";
ctx2.save();
ctx2.translate(20,20);
//ctx2.rotate(x/20);
ctx2.fillRect(-15, -15, 100, 100);
ctx2.restore();
}
init();
</script>
</section>
https://jsfiddle.net/om0n8qka/1/
my worked code : https://jsfiddle.net/kqsLwb80/
I have found answer for my solution, updated code is here https://jsfiddle.net/lannymcnie/kqsLwb80/10/ Now how could clear the greyball path. just need to display circle only not his path