こんにちは、私は現在のアプリに何かを実装しようとしています。私は新しいサークルが古いサークルの上に来るポイントでユーザがクリックすると、重なり合うサークルを隠したいと思う。だから私は以前に描画された円を消したり隠したりしてキャンバスに新しいサークルを作る必要があります。現在のコードはうまく動作していますが、重複する円を隠すことはありません。私はそれに固執しています。私は描画された円の位置を格納するためのjson配列を作成し、ユーザーが同じ円の近くをクリックまたは描画するとそれらを削除する方法を知らない。円の半径は30のままです。ここに私の現在のコードがあります。ユーザーが同じ領域をクリックしたときにキャンバスからサークルを非表示または消去する
<!DOCTYPE html>
<html lang="en">
<head>
<title>Canvas Sample -- Arc Shapes</title>
<meta charset="utf-8">
<script src="circle2.js"></script>
<style type="text/css">
#testCanvas {
border: 1px solid #999
}
</style>
</head>
<body>
<canvas id="testCanvas" width="400" height="400"> </canvas>
</body>
</html>
// javascriptのコード
window.onload = init;
// access the canvas element and its context
function init() {
var canvas = document.getElementById("testCanvas");
var context = canvas.getContext("2d");
// add click handler
canvas.onclick = function(e) {
var pos = getMousePos(canvas, e); // get position as before
context.fillStyle = randomColor(); // get the fill color
var path=[]; //array to store the positions.
// fill a circle
context.beginPath();
context.arc(pos.x, pos.y, 30, 0, 2 * Math.PI);
context.fill();
}
}
function randomColor() {
var color = [];
for (var i = 0; i < 3; i++) {
color.push(Math.floor(Math.random() * 256));
}
return 'rgb(' + color.join(',') + ')';
}
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
はフィドルをしてください – Eric
https://jsfiddle.net/5yto4e3r/ – Rahila