Essa atividade me fez recordar o logo do DVD que ficava trocando de cor e direção enquanto se movia pela tela. Então, decidi fazer essa bolinha da mesma forma (parecida).
Mas me ficou uma dúvida. Tem como diminuir essa quantidade de "If"? Criar funções para elas?
<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);
function desenhaCirculo(x, y, r, cor) {
pincel.fillStyle = cor;
pincel.beginPath();
pincel.arc(x, y, r, 0, 2 * Math.PI);
pincel.fill();
}
function limpaTela() {
pincel.clearRect(0, 0, 600, 400);
}
var r = 25;
var incriment = 1;
var x = 200;
var y = 300;
var incrimentX = 7;
var incrimentY = 7;
var colors = ['darkred','red', 'orange','yellow', 'green','darkgreen','blue','indigo','violet'];
var n = 0
function atualizaTela() {
limpaTela();
if ( r > 30 ) {
incriment = -1;
} else if ( r < 20 ) {
incriment = 1;
}
if ( x > 570) {
incrimentX = -7;
n += 1;
} else if ( x < 30) {
incrimentX = 7;
n += 1;
}
if (y > 370){
incrimentY = -7;
n +=1;
} else if (y < 30) {
incrimentY = 7;
n +=1;
}
if(n > 8) {
n = 0;
}
desenhaCirculo( x, y, r, colors[n]);
r = r + incriment;
x = x + incrimentX;
y = y + incrimentY;
n = 0 + n;
}
setInterval(atualizaTela,20);
</script>