Bonjour,
Je suis entrain de chercher le moyen de faire une animation en java 2D et je cherche le moyen de faire une animation dans une animation ...
Je m'explique, j'ai crée une Class Sprite qui charge une image et gère son déplacement.
Hormis son déplacement, je souhaiterais que l'image ait une animation indépendante (écrasement composé de 4 parties d'image)
Je voudrais donc que le je code de l'animation se trouve dans la Class Sprite (Toad) mais je n'ai vraiment aucune idée de comment faire...
Dois je créer un thread dans cette Class ? Devrait elle être un JPanel pour pour dessiner directement dedans ? Parce que pour l'instant je dessiner dans une autre classe. Enfin, je suis un peu perdu donc si vous avez une idée ou une piste n'hésitez pas.
Ma Class Sprite
Ma Class Principal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Toad { private int dx; private int dy; private int x; private int y; private Image imgToad = new ImageIcon(this.getClass().getResource("toad.png")).getImage(); public Toad() { x = 40; y = 60; } public void move() { x += dx; y += dy; } public int getX() { return x; } public int getY() { return y; } public Image getImage() { return imgToad; } public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_LEFT) { dx = -1; } if (key == KeyEvent.VK_RIGHT) { dx = 1; } if (key == KeyEvent.VK_UP) { dy = -1; } if (key == KeyEvent.VK_DOWN) { dy = 1; } } public void keyReleased(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_LEFT) { dx = 0; } if (key == KeyEvent.VK_RIGHT) { dx = 0; } if (key == KeyEvent.VK_UP) { dy = 0; } if (key == KeyEvent.VK_DOWN) { dy = 0; } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class MarioBrosByD3L1 extends JPanel implements ActionListener { private Timer timer; private Toad toad; public MarioBrosByD3L1() { addKeyListener(new TAdapter()); setFocusable(true); setBackground(Color.BLACK); setDoubleBuffered(true); toad = new Toad(); timer = new Timer(5, this); timer.start(); } public static void main(String[] args) { MarioBrosByD3L1 game = new MarioBrosByD3L1(); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setLocationRelativeTo(null); f.setResizable(true); f.setSize(640, 480); f.add(game); f.setVisible(true); } @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D)g; g2d.drawImage(toad.getImage(), toad.getX(), toad.getY(), this); repaint(); Toolkit.getDefaultToolkit().sync(); g.dispose(); } @Override public void actionPerformed(ActionEvent e) { toad.move(); repaint(); } private class TAdapter extends KeyAdapter { @Override public void keyReleased(KeyEvent e) { toad.keyReleased(e); } @Override public void keyPressed(KeyEvent e) { toad.keyPressed(e); } } }
Partager