Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

[Duda] dudas con evento.page

saludos de verdad me ayudaría mucho si alguien me explica la lógica que hay en evento.page y todas las condiciones del if. Si las leo las entiendo pero no todavía no soy capaz de usarla por mi mismo

5 respuestas

Buenos dias Ramón. Lo que llamas "evento" es un objeto que has creado para poder acceder al valor de "pageX" o "pageY" que son coordenadas que se generan al hacer un click sobre el campo pantalla generado previamente mediante "canvas". En cuanto a "las condiciones del if" no se cual es tu duda concreta sobre eso, si me das mayores detalles quiza pueda ayudarte. Espero haberte sido de ayuda.

Hola amigo gracias por ayudarme. si claro que te daré detalles. lo que no entiendo es la lógica que se usa en el if. se que se le da una condición con respecto a una variable y que tiene un else para cuando no se cumple pero en el ejercicio del dibujo con diversos colores no entendí bien la condición que se establecía. Si me puedes explicar te lo agradezco, te voy a copiar todo el código que hizo el instructor para que lo veas mejor. Me pierdo es en la parte de evento cuando establecen mayor que &&

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

    //Variables para dibujar la paleta
    var xRojo = 0;
    var xVerde  = 50;
    var xAzul = 100;
    var yCuadrados = 0;
    var tamanhoCuadrados = 50;
    var colorActual = "blue";

    function dibujarCirculo(x,y,colorActual ) {

        if(puedoDibujar) {

            pincel.fillStyle = colorActual;
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();

        }
    }

    //Función para dibujar cada uno de los cuadrados de la paleta
    function dibujarCuadrado(x, y, tamanho, color) {

        pincel.fillStyle = color;
        pincel.fillRect(x, y, tamanho, tamanho)
        pincel.fill();

    }

    //Función para dibujar la paleta de colores
    function dibujarPaletaColores() {

        dibujarCuadrado(xRojo, yCuadrados, tamanhoCuadrados, 'red');
        dibujarCuadrado(xVerde, yCuadrados, tamanhoCuadrados, 'green');
        dibujarCuadrado(xAzul, yCuadrados, tamanhoCuadrados, 'blue');

    }

    function habilitarDibujar() {

        puedoDibujar = true;

    }

    function deshabilitarDibujar() {

        puedoDibujar = false;

    }

    //Función para delimitar el área
    function puedeDisenharArea(xCoordenada,yCoordenada){

        if ((xCoordenada >= 0 && xCoordenada < (3*tamanhoCuadrados+5)) && 
            (yCoordenada >=0 && yCoordenada < (tamanhoCuadrados+5))) {

            return false;

        } else{

            return true;

        }

    }    

    function capturarMovimientoDelMouse(evento){

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

        if (puedeDisenharArea(x,y)){

                dibujarCirculo(x,y,colorActual);

        }

    }

    function seleccionarColor(evento) {

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

        //Cada condición altera el color de la variable colorActual

        //Comenzamos por la condición del eje Y que es común para todas
        if (y > yCuadrados && y < (yCuadrados + tamanhoCuadrados)) {

            if(x > xRojo && x < (xRojo + tamanhoCuadrados)) {

                colorActual = "red";
                console.log(colorActual);

            } else if (x > xVerde && x < (xVerde + tamanhoCuadrados)) {

                colorActual = "green";

            } else if(x > xAzul && x < (xAzul + tamanhoCuadrados)) {

                colorActual = "blue";

            }            


        }


    }
solución!

Espero ayudarte explicando el código, el evento puedes verlo como una fotografía de todo los elementos que están en ese instante en el canvas, en los eventos "evento.pageX" y "evento.pageY" obtienes las coordenadas del puntero del mouse en ese instante. Las cuales utilizaras para determinar donde se encuentra el puntero del mouse. Ahora con esas coordenadas determinaras "si" el puntero se encuentra dentro del área de la paleta. Usando la función "if" verificas si "y" se encuentra dentro de la altura de los cuadros:

if (y > yCuadrados && y < (yCuadrados + tamanhoCuadrados))

si es así entonces, verifica en que cuadro se localiza el puntero, comparando el valor de "x" con la anchura de cada uno de los tres cuadros de la paleta:

if(x > xRojo && x < (xRojo + tamanhoCuadrados))

si no es en este procede al siguiente:

else if(x > xAzul && x < (xAzul + tamanhoCuadrados))

si no es este procede al siguiente:

else if (x > xVerde && x < (xVerde + tamanhoCuadrados))

Espero te sirva o aclare un poco , si puedo darte más ayuda con gusto.

¿Me podrías decir con que clase y a que ejercicio corresponde?. Es para ubicarme mejor. Gracias

muchas gracias a los dos... ya entendí la lógica gracias a la explicación de Mauricio. Me pude ubicar en el canvas, condiciono la posición del puntero y si esta en el cuadrado que ejecute la acción. gracias por la paciencia y el tiempo