Hello!
Avec l'apllet qui suit on crée des ballons qui disparaissaient petit à petit (= changent de couleur de noir en blanc passant par le gris) en cliquant sur l'écran. Mais j'ai u problème: le premier ballon se dessine sans problème mais les suivants clignotent comme sans double tampon. Est-ce que vous arrivez de voir ce qui ne va pas?
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
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
112
113
 
import java.applet.*; 
import java.awt.*; 
import java.awt.event.*;
import java.util.*; 
 
public class Test extends Applet implements MouseListener, Runnable{
 
	int x;
	int y;
	boolean boolDessine = false;
	int red = 0;
	int green = 0;
	int blue = 0;
 
	Ballon ballon;
	Vector vector;
	Thread actif = null;
	Image imgBuffeur;  
	Graphics gBuffeur;
 
/**********************/
 
	public void init() {
 
		addMouseListener(this);
 
		ballon = new Ballon(x, y);
 
		vector = new Vector();	
 
		imgBuffeur=createImage(this.getWidth(),this.getHeight());  
 
		gBuffeur=imgBuffeur.getGraphics();
	}
 
/**********************/	
 
	public void start() {
		if (actif == null) {
			actif = new Thread(this);
			actif.start();
		}
	}
 
/**********************/		
 
	public void run() {
		while (Thread.currentThread()==actif){
			for (int i=0; i < vector.size(); i++) {
				ballon=(Ballon)vector.elementAt(i);
				ballon.disparait(red, green, blue);
				if (ballon.blanc()){		
            		vector.removeElementAt(vector.size()-1);
         		}
				repaint();						
			}
 			try	{
  				Thread.sleep(10);
  			}
  			catch(InterruptedException e){}
		}
	}
 
/**********************/
 
	public void update(Graphics g) {  
		paint(g);  
	}	
 
/**********************/
 
	public void paint(Graphics g) {
 
		if (boolDessine){
			gBuffeur.setColor(Color.white);  
			gBuffeur.fillRect(0,0,this.getWidth(),this.getHeight());
 
			for (int i=0; i < vector.size(); i++) {
				ballon=(Ballon)vector.elementAt(i);
				ballon.dessine(gBuffeur);			
 
			g.drawImage(imgBuffeur, 0, 0, this);	
			}
		}
 
	}
 
/**********************/	
 
	public void mouseClicked(MouseEvent e) {}
 
	public void mouseEntered(MouseEvent e) {}
 
	public void mouseExited(MouseEvent e) {}
 
	public void mousePressed(MouseEvent e) {
 
		int xCoord = e.getX();
		int yCoord  = e.getY();
 
		x = xCoord-(ballon.TAILLE/2);
		y = yCoord-(ballon.TAILLE/2);
 
		ballon = new Ballon (x, y); 
		vector.addElement(ballon);
  		boolDessine=true;	
		repaint();
 
	}
 
	public void mouseReleased(MouseEvent e) {}
}
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
 
import java.awt.*;   
 
public class Ballon{
 
	int x; 
	int y;
	final static int TAILLE = 20;
	Color couleur;
	int fois;
	int red;
	int green;
	int blue;
 
	public Ballon(int x, int y){
		this.x=x;
		this.y=y;
	}
 
	public void disparait(int red, int green, int blue){
		fois++;
		if (fois <= 255){
			couleur = new Color (red+fois, green+fois, blue+fois);
		}	
	}
 
	public boolean blanc(){
		red = couleur.getRed();
		green = couleur.getGreen();
		blue = couleur.getBlue();
			if (red == 255 && green == 255 && blue == 255){
				return true;
			}
			else{
				return false;
			}
	}
 
	public void dessine(Graphics g) {
		g.setColor(couleur);
		g.fillOval(x, y, TAILLE, TAILLE);
	}
}
Merci beaucoup pour votre aide!!
Tootsi