problema con imágenes
Hola, estoy trabajando con double buffering para componer una imágen con un gif de fondo y varios otros gif chicos encima, el tema es que a veces la variable que contiene la imagen de fondo se reemplaza por una de las imágenes chicas. A veces anda bien , a veces se reemplaza, como puedo solucionar el problema, para mi que es algo de posiciones de memoria
A continuacion te mando el codigo de lo que a mi me enseñaron como doble buffer:
public void nombre_clase extends applet implements runnable{
Thread hilo=null;
//creacion del buffer y objeto graphics que usas para pintar en el buffer
Image buffer;
Graphics pagina;
}
//en el metodo init() se inicializan las dos variables
buffer=createImage(size().width,size().heigth);
pagina=buffer.getGraphics();
public void paint(Graphics g){
pagina.drawString("Hola", x,y);
//esta es la linea que pone la imagen de pagina en el objeto g
g.drawImage(buffer,0,0,this);
}
public void update (Graphics g){
paint (g);
}
public woid run(){
while (true){
repaint ();
Thread.sleep(hilo);
}}
public void start(){
if (hilo==null){
hilo=new Thread (this);
hilo.star();
}}
public void stop(){
if(hilo!=null){
hilo.stop();
hilo=null;
}}
Con respecto a que se intercambian las imagenes lo mas probable es que sea un error de logica tuyo, ya sea que estes utilizando una sola variable imagen para tus 3 imagenes y al momento de mandarlas llamar se confunde el compilador, o que tengas 3 variables imagenes, y que al momento de llamar por ejemplo a la imagen1 en realidad estas llamando a la imagen2, es decir en vez de mandar llamar la imagen de fondo llamas una de las imagenes pequeñas.(Es probable que te estes revolviendo con tus variables).
public void nombre_clase extends applet implements runnable{
Thread hilo=null;
//creacion del buffer y objeto graphics que usas para pintar en el buffer
Image buffer;
Graphics pagina;
}
//en el metodo init() se inicializan las dos variables
buffer=createImage(size().width,size().heigth);
pagina=buffer.getGraphics();
public void paint(Graphics g){
pagina.drawString("Hola", x,y);
//esta es la linea que pone la imagen de pagina en el objeto g
g.drawImage(buffer,0,0,this);
}
public void update (Graphics g){
paint (g);
}
public woid run(){
while (true){
repaint ();
Thread.sleep(hilo);
}}
public void start(){
if (hilo==null){
hilo=new Thread (this);
hilo.star();
}}
public void stop(){
if(hilo!=null){
hilo.stop();
hilo=null;
}}
Con respecto a que se intercambian las imagenes lo mas probable es que sea un error de logica tuyo, ya sea que estes utilizando una sola variable imagen para tus 3 imagenes y al momento de mandarlas llamar se confunde el compilador, o que tengas 3 variables imagenes, y que al momento de llamar por ejemplo a la imagen1 en realidad estas llamando a la imagen2, es decir en vez de mandar llamar la imagen de fondo llamas una de las imagenes pequeñas.(Es probable que te estes revolviendo con tus variables).