Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Disenharconmouse mi versión

Utilice un poco los arrays y un while, para realizar el ejercicio, aunque no se si se puede considerar muy burda, mi solución para no alterar el área de la paleta:

<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;

    function dibujarCirculo(evento) {

        if(puedoDibujar) {
            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;
            pincel.fillStyle = coloresPaleta[contadorColor];
            pincel.beginPath();
            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;


    //creacion visual de paleta de colores

    var coloresPaleta = ["blue","red","green"];
    var contador = 0;
    var coordXpaleta = 0;
    var coordYpaleta = 0;

    function crearPaletadeColores() {
        while (contador < 3) {
            pincel.fillStyle = coloresPaleta[contador];
            pincel.fillRect(coordXpaleta, coordYpaleta, 50,50);
            contador++;
            coordXpaleta = coordXpaleta + 50;   
        }

    }

    //creacion de accion para cambiar color con paleta de color

    var contadorColor = 0;
    var xpaleta = [0,50,100,150];
    var ypaleta = [0,50];

    function cambiarColor (evento) {

        var x = evento.pageX - pantalla.offsetLeft;
        var y = evento.pageY - pantalla.offsetLeft;

        if ((x > xpaleta[1]) && 
           (x < xpaleta[2]) &&
           (y > ypaleta[0]) &&
           (y < ypaleta[1])) {

            contadorColor = 1;
        }

        if ((x > xpaleta[2]) && 
           (x < xpaleta[3]) &&
           (y > ypaleta[0]) &&
           (y < ypaleta[1])) {

            contadorColor = 2;
        }

        if ((x > xpaleta[0]) && 
           (x < xpaleta[1]) &&
           (y > ypaleta[0]) &&
           (y < ypaleta[1])) {

            contadorColor = 0;
        }

        alert("Ha seleccionado el color: " + coloresPaleta[contadorColor]);
        return false;

    }

    setInterval(crearPaletadeColores(),100);
    oncontextmenu = cambiarColor;

</script>
1 respuesta

Hola Russel, espero que estés bien.

¡Felicidades por tu dedicación y esfuerzo en el curso de lógica de programación! En la programación podemos llegar a un mismo resultado de muchas maneras, por esto practicar es una parte muy importante del aprendizaje y te ayudará a consolidar tus conocimientos y a sentirte más cómodo con lo que has aprendido. Estoy seguro de que tu dedicación y tu práctica te están ayudando a hacer grandes progresos y a adquirir nuevas habilidades. ¡Sigue adelante y sigue practicando! Si tienes alguna duda o necesitas ayuda, no dudes en pedirla, tener dudas es normal, pero quedar con dudas nunca es bueno. ¡Felicidades de nuevo por tu dedicación y tu progreso!

Te recomiendo que compartas la solución de tus ejercicios en nuestro servidor de Discord, allí tenemos un canal exclusivo para eso (#compartatucodigo). Allá podrás tener más interacciones con otros Alumnos, Instructores y la comunidad en general.

¡Estamos aquí para ayudarte!.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios