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

¿COMO LO RESOLVERIAN CON MI LOGICA? (PROYECTO CAMBIANDO DE COLOR)

ESTUVE PENSANDO COMO HACERLO Y LA IDEA QUE TUVE NO FUE DEL TODO PERFECTA OBTENGO LOS TRES COLORES PERO AL 3ER COLOR SE INDEFINE Y SE REPITE EL VERDE CUANDO VI LA GUIA DEL INSTRUCTOR DESCUBRI QUE EL LO HIZO DE UNA MANERA INVERTIDA EN EL ORDEN DE IF Y LE FUNCIONO DE ESTO APRENDO PERO ME GUSTARIA SABER SI ALGUNO DE USTDES TIENE UNA IDEA SIGUIENDO MI LOGICA COMO LO RESOLVERIAN QUE LE HZO FALTA A MI CODIGO? NO QUIERO CAER EN LO FACIL DE COPIAR LO DEL INSTRUCTOR QUIERO RESOLVERLO DONDE YA EMPEZE PERO YA ME TRABE SOBRE COMO CONCLUIRLO ANEXO CODIGO GRACIAS

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

    function exhibirAlerta (evento) {

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

        console.log (evento);
        alert ("usted hizo un click en " + x + "," + y);

    }



    function dibujarCirculo (evento) {

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

        pincel.fillStyle = colores [numerodeClicks];
        pincel.beginPath ();
        pincel.arc (x,y,10,0,2*3.14);
        pincel.fill (); 
        console.log ( + x + "," + y);

    }


    pantalla.onclick = dibujarCirculo;


        var colores = ["blue","red","green"];
        var numerodeClicks = 0;

    function alterarColor() {


        if (numerodeClicks < colores.length) {
            numerodeClicks++;

        }     else {
            numerodeClicks = 0

            }
        console.log(numerodeClicks);
           console.log(colores [numerodeClicks]);
           console.log (colores.length);
        return false;
    }


    pantalla.oncontextmenu = alterarColor;



</script>
5 respuestas
solución!

Creo que lo descubrí, ya que me pasó algo similar. El error está en que para la función alterarColor() estamos usando más instrucciones de las necesarias, y estamos realizando validaciones aún cuando en principio no hace falta, el problema puedes verlo cambiando una única línea de posición, sería algo así.

Este es tu código:

   function alterarColor() {

        if (numerodeClicks < colores.length) {
            numerodeClicks++;
        }

        else {
            numerodeClicks = 0
        }

        console.log(numerodeClicks);
        console.log(colores [numerodeClicks]);
        console.log (colores.length);
        return false;
        }

Este sería el nuevo código:

function alterarColor() {
        numerodeClicks++;
        if (numerodeClicks < colores.length) {
        }

        else {
            numerodeClicks = 0
        }

        console.log(numerodeClicks);
        console.log(colores [numerodeClicks]);
        console.log (colores.length);
        return false;
        }

Como puedes ver, solamente ubicando la instrucción numerodeClicks++; fuera del if el programa funciona como debería, y nos damos cuenta que no son necesarias tantas validaciones, creo que también esa es la razón por la que el tutor lo reduce a un if que comprueba si el valor es mayor o igual, junto con un else que en realidad lo que hace es que no salte el contextmenu que debería salir cuando cliqueamos con el botón derecho.

me exploto la mente bro, jamas habria imaginado que ese seria el problema de verdad gracias me ayudo mucho

Lo que sucede es que colores.length tiene el valor 3 y debe ser 2. Lo arreglas colocando colores.length - 1.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

¡Es cierto!, no me fijé en que él estaba usando ese método.

pero tu correcion me ayudo sin moverle nada a colores.length estimado javier, entonces ya me entro la duda cual es la manera correcta de abordarlo