Java - Ayuda con repaint en applet

 
Vista:

Ayuda con repaint en applet

Publicado por Alfredo (4 intervenciones) el 01/05/2007 18:15:04
Estoy haciendo un applet y no consigo que repaint se ejecute correctamente. Os adjunto el codigo. Lo que quiero conseguir es que la pelota se vaya moviendo, pero lo único que consigo es que sólo aparezca al final del recorrido. Creo que el problema está en que repaint sólo se ejecuta 1 vez pero no sé cómo hacer que se ejecute cada vez que se cambia alguna coordenada de la pelota

Gracias


import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Principal extends Applet implements Runnable, MouseListener{


Thread anima,anima2;
int radio=10; //radio de la pelota
int x, y,x1,y1,x0,y0; //posición del centro de la pelota
int dx = 1; //desplazamientos
int dy = 1;
int anchoApplet;
int altoApplet;
double dir,x2,y2;
int energia=15;

// Para el Buffer
Image imag;
Graphics gBuffer;

public void init () {
anchoApplet=getSize().width; //dimensiones del applet
altoApplet=getSize().height;
x=anchoApplet/4; //posición inicial de partida
y=altoApplet/2;
addMouseListener(this);
}
public void start(){
if(anima ==null){
anima=new Thread(this);
anima.start();


}
}
public void stop(){
if(anima!=null){
anima.stop();
anima=null;
}
}
public void run() {
x1=30;
y1=30;
}
void mover() {

energia=energia-1;
x2=x0+(energia*Math.cos(dir));
y2=y0+(energia*Math.sin(dir));
x1=(int) x2;
y1=(int) y2;
System.out.println("x: "+x0+" ------> "+x1);
System.out.println("y: "+y0+" ------> "+y1);
x0=x1;
y0=y1;
repaint();




}
public void paint (Graphics g) {
g.setColor(Color.red);
g.fillOval(x1-radio, y1-radio, 2*radio, 2*radio);

}

public void update(Graphics g){
System.out.println("Repaint llamado");
if(gBuffer==null){
imag=createImage(anchoApplet, altoApplet);
gBuffer=imag.getGraphics();
}
gBuffer.setColor(getBackground());
gBuffer.fillRect(0,0, anchoApplet, altoApplet);
// dibuja la pelota
gBuffer.setColor(Color.red);
gBuffer.fillOval(x1-radio, y1-radio, 2*radio, 2*radio);
// transfiere la imagen al contexto gráfico del applet
g.drawImage(imag, 0, 0, null);
}

public void mousePressed(MouseEvent e) {
x0=x1;
y0=y1;
x1=e.getX();
y1=e.getY();
calculodedireccion();

}
public void mouseReleased(MouseEvent e) {
energia=10;
while (energia>0) {
mover();
try {
Thread.sleep(100);
}
catch(InterruptedException ex){
break;
}
}

}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}

public void calculodedireccion(){
dir=Math.atan((y1-y0)/(x1-x0));
if (x1-x0>0)
dir=2*Math.PI-dir;
if (x1-x0<=0)
dir=Math.PI-dir;

System.out.println(dir);


}

}
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