I'm trying to create a new canvas animation of five circles revolving around a center point (similar to the solar system). So I've created the five circles and trying to rotate the canvas:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script type="text/javascript">
var num=5, balls = [] ;
function Ball() {
this.r = 20;
this.x =Math.random()*200;
this.y = Math.random()*150;
}
function init() {
canvas = document.getElementById("testCanvas");
context = canvas.getContext("2d");
context.clearRect(0,0,context.width,context.height);
context.fillStyle= "lightblue";
context.save();
context.translate(300,300);
for(i=0; i<num ;i++){ balls[i] = new Ball() }
setInterval(draw,50);
}
//function blank() {
//context.fillStyle="white";
//context.fillRect(0,0,context.canvas.width, context.canvas.height);
// }
function draw(){
context.clearRect(0,0,canvas.width,canvas.height);
for(i=0 ; i< num ; i++){
var Ball = balls[i];
context.beginPath();
context.arc(Ball.x, Ball.y, Ball.r,0,2*Math.PI, false);
//context.stroke();
context.fill();
}
context.rotate(0.08);
context.translate(0,0);
context.beginPath();
context.arc(0,0,240,0,Math.PI*2,false);
context.lineWidth = 8;
context.stroke();
}
</script>
</head>
<body onload="init()">
<canvas id="testCanvas" width="600" height="600">
Canvas not supported
</canvas>
</body>
</html>
The issue is that the clearRect
call doesn't seem to effective; sometimes I can see "trails" from one or more circles:
There are several issues here:
I made some changes below -