[Débutante] Double tampon
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:
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:
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
Re: [Débutante] Double tampon
Quelqu'un, au secours...?