Mi potete dire dove posso trovare una esaustiva guida all'uso del doppio buffer?In rete ho trovato solo poco roba troppo incasinata per me!
Mi potete dire dove posso trovare una esaustiva guida all'uso del doppio buffer?In rete ho trovato solo poco roba troppo incasinata per me!
a cosa ti serve? prova con questo http://www.pierotofy.it/pages/appunt...gini_con_Java_(I)/
o con questo
Il Doppio Buffer
Se qualcuno ha già provato a fare qualcosa di grafico tipo un testo scorrevole , avrà sicuramente notato che se scriviamo e cancelliamo continuamente un testo esso lampeggia o come molti dicono “fa lo sfargallio” questo perchè scrivere nella memoria video direttamente è lento. La soluzione che nel tempo si è andata affermandosi è il cosidetto Doppio Buffer o double buffering la filofia di questo metodo è :
creiamo in memoria un buffer video virtuale e apportiamo a questo tutto quello vorremmo fare sulla memoria video e alla fine copiamo tutto il buffer nella memoria .
In Java la sua implementazione è molto facile (a differenza di altri linguaggi di programmazione quali c/c++, pascal...)e permette di eliminare totalmente lo sfarfallio .
Per prima cosa creiamo un oggetto Image vuoto che sarà il nostro buffer virtuale
Creiamo un oggetto di tipo Graphics che è l’ oggetto grafico del buffer virtuale
Usiamo l’ oggetto Graphics per disegnare cancellare nel buffer virtuale
Copiamo l’ oggetto Image nella memoria video
import java.awt.*;
import java.applet.*;
class Prova extens Applet
{
Image buffervirtuale;
Graphics b_graph;
public void init()
{
......
//creo un’ immagine vuota della grandezza di tutto l’ applet
buffervirtuale= createImage(this.getSize().width ,this.getSize().height);
// prendo l’ oggetto Graphics del buffer per porter apportare modifiche
// al buffer
b_graph=buffervirtuale.getGraphics();
b_graph.drawString(10,10,”ciao Mondo!”);
repaint(); //forzo l’ aggiornamento dell’ applet
}
public void paint(Graphics g)
{
update(g); //uso update perchè aggiorno tutto l’ applet
}
public void update(Graphics g)
{
//disegno tutto quello che c’ è nel buffervirtuale e così elimino lo sfarfallio
g.drawImage(0,0,buffervirtuale);
}
}//~ Fine class Prova
Conclusione
È possibile realizzare mediante Java videogiochi di qualsiasi tipo (o quasi ) implementando soluzioni e algoritmi sempre più efficienti dato che il linguaggio offre queste opportunità ma l’ arma che non dobbiamo trascurare è la nostra fantasia.
Si ma l'esemmpio da te riportato si riferisce ad un Applet, a me serve un esempio per una applicazione JAva normale.
Comunque mi serve perchè devo fare un videogioco.
Ho letto che i componenti swing implementano già questa tecnica di default, vorrei orientarmi sullo swing quindi già che ci sono, ma non ho capito se questo si riferisce solo a componenti veri e propri(bottoni, checkbox, list ecc ecc) o anche a figure disegnate.
Lo sapete?