Olá, após ver o resultado proposto pelo professor neste exercício, me veio a mente mostrar para o usuário qual cor estaria atualmente sendo usada, antes da tela ser rabiscada. Então, após algumas tentativas fracassadas, comecei a ler os comentários do fórum pra ver se mais alguém tinha a mesma dúvida que eu, e me deparei com uma proposta de um colega muito interessante. Ele colocou um quadrado colorido auxiliar ao lado da tela, totalmente preenchido com a cor atual. Dei uma lida minuciosa no código dele e modifiquei pra deixar apenas uma caixa de texto. Minha intenção era que o nome da cor aparecesse toda vez que fosse trocado de cor com o botão direito do mouse, mas não consegui, deixei apenas a palavra "cor" estática lá, porém, modificando sua cor conforme os cliques do usuário. O código ficou um pouco extenso, mas funcional:
<canvas id="tela" width="600" height="400"></canvas>
<canvas id="indicador_cor" width="50" height="50"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
var indicadorCor = document.querySelector("#indicador_cor");
var pincelIndicadorCor = indicadorCor.getContext("2d");
pincelIndicadorCor.font='20px Arial';
pincelIndicadorCor.fontWeight='bold';
pincelIndicadorCor.fillStyle='blue';
pincelIndicadorCor.fillText("COR", 5, 30);
pincel.fillStyle = 'grey';
pincel.fillRect(0, 0, 600, 400);
function desenhaCirculo(evento) {
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
pincel.fillStyle=cores[corAtual];
pincel.beginPath();
pincel.arc(x, y, 10, 0, 2*Math.PI);
pincel.fill();
console.log(x + ',' + y)
}
function mudaCor() {
corAtual++
if (corAtual>=cores.length) {
corAtual=0
}
mudaIndicadorCor();
return false;
}
function mudaIndicadorCor() {
pincelIndicadorCor.fillStyle = cores[corAtual];
pincelIndicadorCor.font='20px Arial';
pincelIndicadorCor.fontWeight='bold';
pincelIndicadorCor.fillStyle='corAtual';
pincelIndicadorCor.fillText("COR", 5, 30);
}
var cores=['blue', 'red', 'green']
var corAtual=0
tela.onclick = desenhaCirculo;
tela.oncontextmenu = mudaCor;
</script>
O que poderia ser melhorado?