Java - Animacion

   
Vista:

Animacion

Publicado por j (25 intervenciones) el 29/03/2017 22:44:27
Buenas tardes alguien me puede ayudar a que una bola se desplaze a un lugar del jpanel cuando doy click izquierdo, pero que no aparezca de una vez ahi, sino que se vea el recorrido de la bola, utilizando Hilos, muchas gracias
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

Animacion

Publicado por Andrés (337 intervenciones) el 30/03/2017 03:00:21
Estaba ocupado, sorry :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
 
/**
 *
 * @author andreas
 */
public class Bolas extends JFrame implements MouseListener {
 
    private int x1 = 0;
    private int y1 = 0;
 
    class AnimaBolasThread extends Thread {
 
        private double x2;
        private double y2;
 
        public AnimaBolasThread(double x2, double y2) {
            this.x2 = x2;
            this.y2 = y2;
        }
 
        public void run() {
 
            double deltaX = x2 - x1;
            double deltaY = y2 - y1;
 
            final double numSteps = 15;
            double incStepX = Math.abs(deltaX) / numSteps;
 
            incStepX *= deltaX > 0 ? 1 : -1;
 
            double m = deltaY / deltaX;
 
            double b = y1 - m * x1;
 
            for (int i = 1; i < numSteps + 1; i++) {
 
                x1 += incStepX;
                double y = m * x1 + b;
 
                y1 = (int) y;
 
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        repaint();
                    }
                });
 
                try {
                    Thread.sleep(150);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Bolas.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
 
        }
 
    }
 
    public Bolas() {
        setSize(800, 800);
        setLocation(100, 100);
        addMouseListener(this);
        setVisible(true);
    }
 
    public void paint(Graphics g) {
 
        super.paintComponents(g);
 
        g.setColor(Color.RED);
 
        g.fillOval(x1, y1, 100, 100);
 
    }
 
    public static void main(String argv[]) {
        Bolas c = new Bolas();
    }
 
    @Override
    public void mouseClicked(MouseEvent e) {
 
        (new AnimaBolasThread(e.getX(), e.getY())).start();
 
    }
 
    @Override
    public void mousePressed(MouseEvent e) {
    }
 
    @Override
    public void mouseReleased(MouseEvent e) {
    }
 
    @Override
    public void mouseEntered(MouseEvent e) {
    }
 
    @Override
    public void mouseExited(MouseEvent e) {
    }
 
}
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
Revisar política de publicidad