Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con animación sincronizada

Estas en el tema de Ayuda con animación sincronizada en el foro de Java en Foros del Web. Saludos. Estoy trabajando en una animación en applets, donde implemento la sincronización con semáforos, sin embargo, por alguna razón, mis figuras no se están dibujando. ...
  #1 (permalink)  
Antiguo 15/09/2007, 22:40
 
Fecha de Ingreso: junio-2007
Mensajes: 56
Antigüedad: 16 años, 10 meses
Puntos: 0
Ayuda con animación sincronizada

Saludos.
Estoy trabajando en una animación en applets, donde implemento la sincronización con semáforos, sin embargo, por alguna razón, mis figuras no se están dibujando. ¿Alguién podría hecharle una mirada a mi código?
Aquí va el applet
import java.applet.*;
import java.awt.*;
public class Test extends Applet implements Runnable
{
private Semaforo mensaje = new Semaforo(1, "Numeros"); // último mensaje producido
private Productor productor1 = new Productor(mensaje);
private Consumidor consumidor1 = new Consumidor(mensaje);
int x_pos = 10; // x - Position des Balles
int y_pos = 100; // y - Position des Balles
int radius = 20; // Radius des Balles
int x_speed = 10; //Recurso
int appletsize_x = 300;
int appletsize_y = 300;
private Image dbImage;
private Graphics dbg;
int color = 0;

public static void main(String[] args)
{

//Consumidor consumidor2 = new Consumidor(mensaje);

//consumidor2.start();
}

public void start()
{
productor1.start();
consumidor1.start();
}

public void run()
{
while (true)
{
repaint();
}
}

/** Update - Method, implements double buffering */
public void update (Graphics g)
{
// initialize buffer
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}

// clear screen in background
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);

// draw elements in background
dbg.setColor (getForeground());
paint (dbg, 1);

// draw image on the screen
g.drawImage (dbImage, 0, 0, this);
}

public void paint (Graphics g, int color){
// set color
if(color == 0){
g.setColor (Color.red);
}else if(color == 1){
g.setColor (Color.blue);
}
// paint a filled colored circle
g.fillOval (10, 100, 2 * radius, 2 * radius);
}

}
////////////////////////Aquí va mis semáforos
class Semaforo{
private int recurso;
private String nombre_recurso;

public Semaforo(int recurso, String nombre_recurso){
this.recurso = recurso;
this.nombre_recurso=nombre_recurso;
}

public synchronized void P(String name){
System.out.println(name + " solicita el recurso");
recurso--;
if(recurso < 0){
try{
System.out.println(name + " esta en espera");
wait();
} catch (InterruptedException e){}
}
}

public synchronized void V(String name){
System.out.println(name + " Libero el recurso");
recurso++;
notifyAll();
}

}
////Y aquí va uno de mis procesos, que es similar al otro proceso y que quiero animar
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
// Sincronización de hilos. Hilo productor.
//
public class Productor extends Thread
{
private Semaforo mensaje = new Semaforo(1, "Numeros"); // último mensaje producido

public Productor(Semaforo c) // constructor
{
mensaje = c;
}

public void run()
{
int cont = 20;
while (cont>=0)
{
mensaje.P("Productor");
System.out.println("Productor entro a la seccion critica");
mensaje.V("Productor");
cont--;
}
}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:39.