4
respuestas

[Duda] tengo un problema con mi codigo, no me aparece el puntero para dibujar, aparece la paleta de colores, pero no me dibuja, este es mi codigo

var pantalla= document.querySelector("canvas");
var pincel= pantalla.getContext("2d");

pincel.fillStyle="gray";
pincel.fillRect(0,0,600,400);
pincel.strokeRect(0,0,600,400);

var puedoDibujar= false;

//Variables para dibujar la paleta
var xRed= 0;
var xGreen= 50;
var xBlue= 100;
var yCuadrados= 0;
var tamanhoCuadrado= 50;
var colorActual= "black"
var lienzoValor=10;

function dibujarCirculo(xposit,yposit,colorActual){

    if(puedoDibujar){
        pincel.fillStyle=colorActual;
        pincel.beginPath();
        pincel.arc(xposit,yposit,lienzoValor,0,2*Math.PI);
        pincel.fill();
    }
    }

function dibujarcuadrado(x,y,tamanio,color){
    pincel.fillStyle=color;
    pincel.fillRect(x,y,tamanio,tamanio);

}
function paletaColores(){
    dibujarcuadrado(xRed,yCuadrados,tamanhoCuadrado,"red");
    dibujarcuadrado(xGreen,yCuadrados,tamanhoCuadrado,"green");
    dibujarcuadrado(xBlue,yCuadrados,tamanhoCuadrado,"blue");
}

function IcanDraw(){
    puedoDibujar= true;
}
function IcantDraw(){
    puedoDibujar= false;
}


//Función para delimitar el área osea ahi no se puede dibujar pibe
function diseniarArea(xcoordenada,ycoordenada){
    if((xcoordenada >=0 && xcoordenada<(3*tamanhoCuadrado+5)) &&
        (ycoordenada >=0 && ycoordenada <(tamanhoCuadrado+5))){
            return false;
    }else{
        return true;
    }
}

function CapturarMovimientoMouse(evento){
    var x=evento.pageX - pantalla.offsetLeft;
    var y=evento.pageY - pantalla.offsetTop;
    if (IcanDraw(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 (x > yCuadrados && y <(yCuadrados + tamanhoCuadrado)){

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

                colorActual = "red";
                console.log(colorActual);
        }else if (x > xVerde && x < (xVerde + tamanhoCuadrados)) {

            colorActual = "green";

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

            colorActual = "blue";


    }

}
}
//calls
pantalla.onmousemove = CapturarMovimientoMouse;

pantalla.onmousedown = IcantDraw;

pantalla.onmouseup = IcanDraw;

paletaColores();

pantalla.onclick = seleccionarColor;
4 respuestas

Hola, creo que puede ser porque no has definido el canvas, puedes usar esta etiqueta, e incluir todo el código que compartiste en esta etiqueta , también definiste unas variables en inglés para los colores y luego en las condiciones utilizaste palabras en español. Ejemplo var xRed = 0, y hasta abajo tienes xRojo, los cuales en caso de ser diferentes, no los has definido, te sugiero emplear la ventana de desarrollador del navegador que estes utilizando para que te vaya indicando los errores. Saludos

ya lo pude arreglar, lo que pasa es que no es que no lo eh definido, si no que lo pase a un archivo script y lo vincule a un index html, para probar como funciona el canvas dividido

Hola, creo que puede ser porque en tu función de CapturarMovimientoMouse estás poniendo dentro del if a tu función IcanDraw con parámetros, pero no está definida así, esa función no recibe ningún parámetro. Seguramente es por eso que no entra al if y no te está dejando dibujar.

Excelente Marcos Benencia, ten una buena noche.