Hola compañeros , al enfrentarme al ejercicio final de lógica de programación parte 3 "Diseñando con el mouse" logre sacar este código , que a mi parece esta algo más optimizado que el que muestra el instructor , sin embargo quiero saber si es posible optimiza la función cambiarColor
ya que se repite bastante y no se actualiza en caso de que queramos agregar otro color. Agradecería mucho si alguien me puede dar una idea al respecto.
<canvas width="600" height="400"></canvas>
<script>
var pantalla = document.querySelector('canvas');
var pincel = pantalla.getContext('2d');
pincel.fillStyle = 'grey';
pincel.fillRect(0, 0, 600, 400);
var puedoDibujar = false;
let dimensionPaleta = 50;
const paleta = ["blue", "green", "red"]
function crearPaleta(paleta) {
x = 0;
for (let i = 0; i < paleta.length; i++) {
pincel.fillStyle = paleta[i]
pincel.fillRect(x, 0, dimensionPaleta, dimensionPaleta)
x += dimensionPaleta
}
}
crearPaleta(paleta)
let color = "blue"
function cambiarColor(evento) {
let x = evento.pageX - pantalla.offsetLeft;
let y = evento.pageY - pantalla.offsetTop;
console.log(x)
console.log(y)
if ((x <= dimensionPaleta) &&
(y <= dimensionPaleta)) {
color = (paleta[0])
console.log(color)
}
if ((x > dimensionPaleta) &&
(x <= dimensionPaleta * 2) &&
(y <= dimensionPaleta)) {
color = (paleta[1])
console.log(color)
}
if ((x > dimensionPaleta * 2) && (x < dimensionPaleta * 3) &&
(y <= dimensionPaleta)) {
color = (paleta[2])
console.log(color)
}
}
pantalla.onclick = cambiarColor;
function dibujarCirculo(evento) {
if (puedoDibujar) {
var x = evento.pageX - pantalla.offsetLeft;
var y = evento.pageY - pantalla.offsetTop;
pincel.fillStyle = color;
pincel.beginPath();
if (x > dimensionPaleta * paleta.length || y > dimensionPaleta) {
pincel.arc(x, y, 5, 0, 2 * 3.14);
}
pincel.fill();
}
}
pantalla.onmousemove = dibujarCirculo;
function habilitarDibujar() {
puedoDibujar = true;
}
function deshabilitarDibujar() {
puedoDibujar = false;
}
pantalla.onmousedown = habilitarDibujar;
pantalla.onmouseup = deshabilitarDibujar;
</script>