Pessoal,
No último exercício proposto, não tive problema nenhum para criar a função de troca de cor.
Entretanto, fiz um pouco diferente a condição para que não fosse desenhado sobre a paleta, conforme abaixo:
// início do código suprimido
function lidaComMovimentoDoMouse(evento) {
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
if (desenha) {
desenhaCirculo(x, y, 5, corAtual);
if((x >= xRed)
&& (x < xBlue + tamanhoQuadrados + 10)
&& (y >= yQuadrados)
&& (y < tamanhoQuadrados + 10)) {
desenha = false;
}
}
}
// restante do código segue abaixo
Há dois pequenos problemas com esta forma:
Se o pincel chega no limite da paleta e continuamos com o traço, o programa não continua pintando automaticamente após deixar os limites dela. No código do Flávio, o traço parava quando o cursos estava sobre a paleta, mas continuava quando saía dela sem precisarmos clicar e segurar novamente o botão do mouse;
Da forma que está, quando clico sobre a paleta para selecionar uma cor, aparece um único círculo com a cor antiga antes que o navegador aborte a pincelada e troque efetivamente a cor.
Não sei se consegui explicar direito, mas gostaria de compreender porque isso acontece.