Java - Espera de un segundo en un bucle

 
Vista:

Espera de un segundo en un bucle

Publicado por miquel (3 intervenciones) el 09/12/2006 17:49:59
He hecho un bucle que me pinta un cubo en perspectiva estallando, y quiero que al apretar una tecla, entre en este bucle, pero además, quiero que cada vez que calcula las nuevas coordenadas, se espere un segundo y lo pinte, y así sucesivamente.
Lo he intentado con Thread.sleep(1000), con Thread.yield(), pero hace caso omiso, o bien espera ese tiempo, pero solo me lo dibuja al final del bucle, y no parece una explosión real.

La unica solucioón es hacerlo con threads? o hay alguna alternativa?
Pongo mi código para que lo veais, no critiqueis mucho.

public static void pausa(){
try {
Thread.sleep(1500);
} catch (Exception ignored) {}
}


//parte de el programa, concretamente un bucle...

case 'e': // estallar cubo

int n=0;
while (n<100){
estallarCubo();
this.repaint();
pausa();
n++;
}
break;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Espera de un segundo en un bucle

Publicado por chuidiang (950 intervenciones) el 09/12/2006 23:00:55
Hola:

Thread.sleep() duerme el hilo en el que estas. Si el hilo es justo el de pintado de java, verás justo lo que dices, nada durante un tiempo y sólo la explosión al final.

Si la explosión se produce como efecto de la pulsación de un botón, un evento de ratón o teclado o algo similar, lanza inmediatamente un hilo y en ese hilo es donde debes poner el bucle y los sleep(). Llama también a repaint() del componente que tiene el dibujo.

Echa un ojo en http://www.chuidiang.com/chuwiki/index.php?title=El_hilo_de_awt a ver si te ayuda.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Espera de un segundo en un bucle

Publicado por Diego (10 intervenciones) el 09/12/2006 23:09:16
Bueno otro tipo de delay seria este
for(int q=0;q<1000000000;q++);
utilizalo haber =) lo que hace tambien es un retardo de 1 segundo... coloca mas 0 si quieres mas lento... y coloca esa linea en donde quieres el retraso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar