IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Graphisme Java Discussion :

[Débutante] Double tampon


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Par défaut [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 : 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

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Par défaut Re: [Débutante] Double tampon
    Quelqu'un, au secours...?

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Par défaut
    Je te remercie wichtounet, mais j'arrive toujours pas voir ce qui va pas... Quelqu'un voit?

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    il y a que tu n'as pas spécifié de double buffer...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Par défaut
    c'est la première fois que j'en fais, et je croyais que les suivants suffisaient?

    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
     
     
       Image imgBuffeur; 
       Graphics gBuffeur;
    ...
       public void init() {
         ...
          imgBuffeur=createImage(this.getWidth(),this.getHeight()); 
          gBuffeur=imgBuffeur.getGraphics();
       }    
     ...
       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);   
             }
          }  
       }

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Tootsi
    c'est la première fois que j'en fais, et je croyais que les suivants suffisaient?
    Desolé, en fait j'avais mal regardé ton code, ca m'a l'air juste

Discussions similaires

  1. [débutant] Convesion Float to double
    Par cyrill.gremaud dans le forum Langage
    Réponses: 7
    Dernier message: 12/07/2006, 09h06
  2. [Débutant] Formulaire affichage double
    Par hudsson dans le forum Access
    Réponses: 8
    Dernier message: 21/03/2006, 18h42
  3. [Débutant] Supprimer l'écran de double boot windows 2k/XP
    Par Katyucha dans le forum Windows XP
    Réponses: 5
    Dernier message: 11/05/2005, 14h54
  4. [débutant] Listview et double-clic
    Par Runlevel dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/06/2004, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo