🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #28214

Doble Buffer. Re: Parpadeo en los applets Colibr�

#28214
From: x
Date: Thu, 21 May 1998 00:00
108 lines
4228 bytes
Hola,

he entrado en tu pagina y el applet que comentas me da un error que trasncribo
aqui

                # Applet exception: java.lang.NullPointerException

Respecto a lo del parpadeo, yo tuve un problema parecido al tuyo, y tras mucho
documentarme, encontre una tecnica que llaman del "doble buffer", y ya lo creo
que me lo solucion�.
No se si te voy a explicar algo que ya has probado, pero por si acaso.

Primero comento la teoria y despues pondre codigo que lo implementa:

* Se basa en tener 2 objetos Image con 2  objetos Graphics asociados; en uno se
realizaran todas  las operaciones graficas, permaneciendo en  "background";
despues se copiara este objeto Image al segundo, y este �ltimo, que estara
asociado al objeto Graphics por defecto del Applet, de una sola vez tendra todos
los graficos realizados.

Se ha de sobrecargar el metodo Update, tal como muestra el ejemplo: este no es
funcional, he quitado el codigo que no
servia para ilustrar el procedimiento.

      //------------------------------------------------------------
     class DobleBuffer  extends Frame {

     // Variables globales usadas

                 Image      offscreen;        // Objeto Image que representara
la zona en background de dibujo
       Dimension  offscreensize;        // Dimensiones del zona de background
          Graphics   offGraphics;        // Objeto Graphics asociado al objeto
Image de background

       //----------------------------------------------------------
        public void update (Graphics g) {

        Dimension d = size();

        //  Creamos la Imagen que ira en segundo plano, en caso de que no exista
todavia, y obtendremos
        //  las dimensiones actuales del marco de dibujo

        if ((offscreen == null) || (d.width != offscreensize.width) || (d.height
!= offscreensize.height)) {
              offscreen = createImage(d.width, d.height);
              offscreensize = d;

            // Obtenemos el  objeto Graphics asociado al Objeto Image en
background.

              offGraphics = offscreen.getGraphics();
        }

      // Llamamos al objeto Paint para que realize todas las tareas de dibujo
que necesitemos,
      // pero no seran vistas ya que se haran en el objeto Image en background.

        paint(offGraphics);

      // Ahora si que mostramos el resultado final en pantalla, usando el objeto
Graphics adecuado.

        g.drawImage(offscreen, 0, 0, null);
    }


//----------------------------------------------------------------------------------------------

       public void paint(Graphics g) {

          // aqui pondremos todas las operaciones graficas que necesitemos
realizar, como
          // por ejemplo :

              g.draw3DRect (0, 0, size().width-1, size().height-1,true);
          // estas se realizaran en el objeto graphics de la imagen en segundo
plano.
       }

}
//****************************************************************************************

Adios,

xuan




colibri wrote:

> Hola saludos.
> Tengo un problema que llevo arrastrando desde hace bastante tiempo y
> agradecer�a encontrar  una soluci�n.
>
> Tengo un applet que desplaza paneles de un punto a otro del applet, el
> problema es que cada vez que repinta el applet se percibe un parpadeo, creo
> haverlo probado todo; update, repaint , pero sigue parpadeando. Lo �nico que
> me queda es crear un thread para cada objeto.
>
> Saludo y gracias por Atender el mensaje
>
> Si se quiere ver el applet ir a
> http://www.iponet.es/colibri/applets/caja.htm
> o enviarme un email colibri@iponet.es
Technical Details
Message-ID: <35648678.1F8FD419@mat.upc.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <6juusi$hq1$1@talia.mad.ibernet.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1116f3,8fb2a4f2da495a24
X-Google-Attributes: gid1116f3,public
From: x <jmoya@mat.upc.es>
Subject: Doble Buffer. Re: Parpadeo en los applets Colibr�
Date: 1998/05/21
Message-ID: <35648678.1F8FD419@mat.upc.es>
X-Deja-AN: 355314832
Content-Transfer-Encoding: 8bit
References: <6juusi$hq1$1@talia.mad.ibernet.es>
Mime-Version: 1.0
To: colibri <colibri@iponet.es>
Content-Type: text/plain; charset=iso-8859-1
Organization: Universitat Politecnica de Catalunya
Newsgroups: es.comp.lenguajes.java