D. Thu, 20 Dec 2001 13:50:32 +0100 syntes "Jacob Hansen"
<vader@deathstar.dk> at dk.edb.programmering.java skulle vide at
<d6lU7.747$Zm5.147401@news000.worldonline.dk>.
>Hejsa, vi sidder og roder med noget doublebuffering i en applet, men forstår
>ikke helt præcist hvad det er der foregår. Hvis der er nogen, der kunne
>forklare os/kommentere nedenstående kode (hovedsagligt update-metoden),
>ville vi være dybt taknemmelige!
Nogle gange har man set java-appletter ol. med animationer, der står og
blinker, dvs. at før en ny frame i animationen optegnes, tegnes hele
billedet fx. hvidt. Det er ikke pænt. Ved double-buffering, tegner man
billedet i hukkommelsen, og sender det til skærmen. Så tegner man på en ny
tegneflade, og bytter så de to ud.
Dermed har man altid en tegneflade man kan tegne hvid fra start, og man
undgår flimmer. Det kræver rundt regnet dobbelt så meget hukkommelse, men
gør jobbet.
>import java.awt.*;
>
>public class DoubleBufferHandler
>{ DoubleBufferedComponent comp;
> protected Dimension d;
> protected Image im;
> protected Graphics offscreen;
>
> public DoubleBufferHandler(DoubleBufferedComponent comp)
> { this.comp = comp;
> }
>
> final public void update(Graphics g)
> { if (im == null) //Hvorfor gøres nedenstående linier? Hvad bruges
>det til?
> { d = comp.getSize();
Strørrelsen på den komponent, hvorpå der skal tegnes, hentes.
> im = comp.createImage(d.width, d.height);
Der bliver laget et nyt billede, ud fra de hentede dimentioner.
> offscreen = im.getGraphics();
Grapgics-objektet, tilhørende den tegneflade der ikke vises, hentes fra det
netop lavede billede.
> }
> comp.paintFrame(offscreen);
offscreen-objektet tegnes på komponenten.
> g.drawImage(im, 0, 0, comp); // Hvad er det der sker her? Hvad
>bliver der af offscreen objektet? Hvornår tegnes det ud? Er g=skærmen?
Komponenten tegnes på appletten. Mht. offscreen-objektet, er det givet
videre til comp. g er det Graphics-objekt (kan v. Java 1.2 down castes til
et Graphics2D-objekt, der kan noget mere) der representerer appettens
tegneflade, så det kan man godt kalde skærmen.
> }
>}
--
Mvh. Simon Mikkelsen, ingeniørstuderende
www.zipstat.dk Gratis, reklamefri tæller/statistik til enhver hjemmeside
-Se bla. hvor dine besøgende kommer fra, og brug den usynlige tællerkode.