Java - Alguien puede hacer q esto funcione¿?

   
Vista:

Alguien puede hacer q esto funcione¿?

Publicado por Ishac (21 intervenciones) el 31/08/2007 20:08:35
Tengo un applet q dibuja 3 imagenes q se mueven por un campo de futbol, la cosa es q debajo pongo un drawString para q me saque el valor de una variable, pero no se refresca y no se entiende lo q pone, se q es problema del repaint(), pero no entiendo por q no va ya q lo llamo en el metodo run(), tb sobrescribi el metodo update para evitar el parpadeo ( si no lo hago el drawString funciona pero parpadea la animacion ) , el bucle de animacion lo saque de un tutorial y no controlo mucho de java, os voy a adjuntar el codigo a ver si alguien me dice como puedo hacer para ver el dato de la variable con drawString y q no haya parpadeo:

import java.awt.*;
import java.applet.Applet;
import java.lang.*;

public class Simulador extends Applet implements Runnable {

int frameNumber = -1;
int delay;
Thread animatorThread;
boolean frozen = false;


Image fondo;
Image atk1;
Image atk2;
Image atk3;

int coordenadas[][][][]= new int[2][3][4][2];

int c=0;

public void init() {

int fps = 10;
String str;

str = getParameter("fps");
try {
if (str != null) {
fps = Integer.parseInt(str);
}
} catch (Exception e) {}
delay = (fps > 0) ? (1000 / fps) : 100;

fondo = getImage(getCodeBase(), "campo.jpeg");
atk1 = getImage(getCodeBase(), "atk1.gif");
atk2 = getImage(getCodeBase(), "atk2.gif");
atk3 = getImage(getCodeBase(), "atk3.gif");
for (int i=0;i<=1;i++)
{for (int j=0;j<=2;j++)
{for (int k=0;k<=3;k++)
{for (int l=0;l<=1;l++)
coordenadas[i][j][k][l]=-1; }}}
}


public synchronized void start() {
if (frozen) {
//Do nothing. The user has requested that we
//stop changing the image.
} else {
//Start animating!
if (animatorThread == null) {
animatorThread = new Thread(this);
}
animatorThread.start();
}
}

public void stop() {
//Stop the animating thread.
animatorThread = null;
}

public boolean mouseDown(Event e, int x, int y) {
if (frozen) {
frozen = false;
start();
} else {
frozen = true;
stop();
}
return true;
}

public void run() {

Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

long startTime = System.currentTimeMillis();

while (Thread.currentThread() == animatorThread) {

frameNumber++;

repaint(); <------------------------------------------------------------------------------------------

try {
startTime += delay;
Thread.sleep(Math.max(0,startTime-System.currentTimeMillis()));
} catch (InterruptedException e) {
break;
}
}
}


public synchronized void update(Graphics g) {

paint(g); <-----------------------------------------------------------
}

public synchronized void paint(Graphics g) {

c++;

if (c==5) c=1;


String E0_aux1 = "E0D1C" + c;
String E0_aux2 = "E0D2C" + c;
String E0_aux3 = "E0D3C" + c;

String E0_j1 =getParameter(E0_aux1);
String E0_j2 =getParameter(E0_aux2);
String E0_j3 =getParameter(E0_aux3);

try { if (E0_j1 != null) { String[] cadenaE0j1= E0_j1.split(","); String E0_j1_x = cadenaE0j1[0]; String E0_j1_y = cadenaE0j1[1]; coordenadas[0][0][c-1][0] = Integer.parseInt(E0_j1_x); coordenadas[0][0][c-1][1] = Integer.parseInt(E0_j1_y); } } catch (Exception e) {}
try { if (E0_j2 != null) { String[] cadenaE0j2= E0_j2.split(","); String E0_j2_x = cadenaE0j2[0]; String E0_j2_y = cadenaE0j2[1]; coordenadas[0][1][c-1][0] = Integer.parseInt(E0_j2_x); coordenadas[0][1][c-1][1] = Integer.parseInt(E0_j2_y); } } catch (Exception e) {}
try { if (E0_j3 != null) { String[] cadenaE0j3= E0_j3.split(","); String E0_j3_x = cadenaE0j3[0]; String E0_j3_y = cadenaE0j3[1]; coordenadas[0][2][c-1][0] = Integer.parseInt(E0_j3_x); coordenadas[0][2][c-1][1] = Integer.parseInt(E0_j3_y); } } catch (Exception e) {}

if ((E0_j1==null) & (c>1)) { coordenadas[0][0][c-1][0]=coordenadas[0][0][c-2][0]; coordenadas[0][0][c-1][1]=coordenadas[0][0][c-2][1]; }
if ((E0_j2==null) & (c>1)) { coordenadas[0][1][c-1][0]=coordenadas[0][1][c-2][0]; coordenadas[0][1][c-1][1]=coordenadas[0][1][c-2][1]; }
if ((E0_j3==null) & (c>1)) { coordenadas[0][2][c-1][0]=coordenadas[0][2][c-2][0]; coordenadas[0][2][c-1][1]=coordenadas[0][2][c-2][1]; }

g.drawImage(fondo, 0, 0, this);
if ((coordenadas[0][0][0][0]!=-1) & (coordenadas[0][0][0][1]!=-1)) g.drawImage(atk1, (coordenadas[0][0][c-1][0]*5)-8, ((50-coordenadas[0][0][c-1][1])*5)-12, this);
if ((coordenadas[0][1][0][0]!=-1) & (coordenadas[0][1][0][1]!=-1)) g.drawImage(atk2, (coordenadas[0][1][c-1][0]*5)-8, ((50-coordenadas[0][1][c-1][1])*5)-12, this);
if ((coordenadas[0][2][0][0]!=-1) & (coordenadas[0][2][0][1]!=-1)) g.drawImage(atk3, (coordenadas[0][2][c-1][0]*5)-8, ((50-coordenadas[0][2][c-1][1])*5)-12, this);
g.drawString("Ciclo: " +c,250,260); <-------------------------------------------------------------
}

}

salu2.
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