Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
8
respuestas

[Duda] limpiar pantalla

al llamar a la funcon limpiar pantalla, limpia todo , no solo el circulo anterior, tambien elimino el canvas light gray que se definio al comienzo de nuestro programa.... que pasa si nosotros tenemos texto o cualquier otro diseños que no queremos limpiar. en este caso solo queremos limpiar el circulo anterior no todo..

en espera de una respuesta. gracias

8 respuestas

Tengo la misma duda que tu, quedo pendiente a una posible solución.

pues ya pasaron varios dias de mi pregunta y nadie respondio, seguiremos con la duda

Manda foto de tú código, para ver el funcionamiento del mismo.

<canvas width="600" height="400"> </canvas>

<script>
    var pantalla = document.querySelector("canvas");
    var pincel = pantalla.getContext("2d");        
    pincel.fillStyle = "lightgrey";
    pincel.fillRect(0,0,600,400);

    function disenharCircunferencia(x,y,radio){
        pincel.fillStyle = "blue";
        pincel.beginPath();
        pincel.arc(x,y,radio,0,2*Math.PI);
        pincel.fill();
    }    

    function limpiarPantalla(){

        pincel.clearRect(0,0,600,400);

    }

    var x = 0;
    var sentido = 1;

    function actualizarPantalla(){

        limpiarPantalla();
        disenharCircunferencia(x,20,10);

        if(x > 600){
             sentido = - 1;

        }else if (x<0){
            sentido = 1;
        }

        x = x + sentido

    }

    setInterval(actualizarPantalla,50);

</script> 

Hola, para conservar el color del canvas lightgrey, hay que poner el pincel.fillStyle = "lightgrey"; y pincel.fillRect(0,0,600,400); en la funcion limpiarPantalla, despues de haber colocado el pincel.clearRect(0,0,600,400);

La funcion limpiarPantalla quedaría asi:

function limpiarPantalla(){
        pincel.clearRect(0,0,600,400);
        pincel.fillStyle = "lightgrey";      //para mantener el color lightgrey del canvas
        pincel.fillRect(0,0,600,400);
    }

El codigo completo para conservar el color lightgrey del canvas es el siguiente:

<canvas width="600" height="400"> </canvas>

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

    function disenharCircunferencia(x,y,radio){
        pincel.fillStyle = "blue";
        pincel.beginPath();
        pincel.arc(x,y,radio,0,2*Math.PI);
        pincel.fill();
    }    

    function limpiarPantalla(){
        pincel.clearRect(0,0,600,400);
        pincel.fillStyle = "lightgrey";      //para mantener el color lightgrey del canvas
        pincel.fillRect(0,0,600,400);
    }

    var x = 0;
    var sentido = 1;

    function actualizarPantalla(){
        limpiarPantalla();
        if(x > 600){
             sentido = - 1;
        }else if (x < 0){
            sentido = 1;
        }
        disenharCircunferencia(x,20,10);
        x = x + sentido
    }

    setInterval(actualizarPantalla,50);

</script>

*Buen aporte lucia corre al 100% y realiza la función de la pantalla de fondo y solo borra el circulo *

muchas gracias.... pero que pasa y tambien tengo otras imagenes y textos, habria que olver a escribir todo???

Hola, cualquier cosa que querés conservar y que aparezca luego de haber ejecutado la función limpiar pantalla, como explique anteriormente, tenés que escribirlo dentro de la funcion limpiarPantalla, luego de haber colocado el pincel.clearRect(0,0,600,400);

La funcion limpiarPantalla quedaría asi:

function limpiarPantalla(){
        pincel.clearRect(0,0,600,400);

        //lo que quieras conservar luego de haber ejecutado la funcion limpiar pantalla, escribirlo a continuacion:

        //en el ejemplo, queremos mantener el color lightgrey del canvas
        pincel.fillStyle = "lightgrey";      
        pincel.fillRect(0,0,600,400);
}