<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgray';
pincel.fillRect(0, 0, 600, 400);//desenha um retângulo preenchido na posição (x, y), no qual o tamanho é determinado pela width (largura) e pela height (altura), e cujo o estilo é determinado pelo atributo fillStyle.
function desenhaCirculo(x, y, raio) {
pincel.fillStyle = 'blue';//especifica a cor ou o estilo para usar regiões internas.
pincel.beginPath();//inicia um novo caminho (path), esvaziando a lista de sub-caminhos (sub-paths).
pincel.arc(x, 30, 30, 0, 2 * Math.PI);//diciona um arco circular para o atual sub-caminhoa (sub-path).
pincel.fill();//preenche um dado path ou o path atual com o estilo atual de preenchimento.
pincel.fillStyle = 'red';
pincel.beginPath();
pincel.arc(x - 20, 75, raio, 0, 2 * Math.PI);
pincel.fill();
pincel.fillStyle = 'green';
pincel.beginPath();
pincel.arc(x + 20, 75, raio, 0, 2 * Math.PI);
pincel.fill();
}
function limpaTela() {
pincel.clearRect(0, 0, 600, 400);//limpa todos os pixels de um retângulo definido na posição (x, y) e tamanho (width (largura), height (altura)) para uma cor preta transparente, apagando algum conteúdo anterior.
}
var x = 20;
var sentido = 1;
function atualizaTela() {
limpaTela();
if( x > 600) {
sentido = -1;
} else if (x < 0) {
sentido = 1;
}
x = x + sentido;
desenhaCirculo(x, 20, 10);
}
setInterval(atualizaTela, 10);
</script>