inserer une gif animé

inserer une gif animé - Java - Programmation

Marsh Posté le 17-05-2003 à 17:21:14    

Salut a tous !!
je voudrais inserer une gif animé dans une fenetre mais je n'y arrive pas, savez vous comment on fait ??
g reussi a mettre une gif non animée mais si j'en met une animé elle s'affiche mais ne s'anime pas.
je vous met le code si ca peut vous aider (g precisé en rouge ou je voulais mettre ma gif) :
 
public class Plateau extends JComponent{
    Environnement envir;
    Font f;
    JButton bStep;
    int moutvivant;
    final static Color coul = Color.green.darker();
    int k,
 compt,  
 hauteur,  
 largeur,  
 taillecase;  
   
public Plateau(Environnement env) {
 envir = env;
 k=0;  
 compt = -1;  
 hauteur = 400;  
 largeur = 400;  
 taillecase = 40;  
 setBackground(coul);
    }
 
    public void paintComponent(Graphics g){
 ImageIcon im_mouton, im_moutondep, im_herbe;
 
 Image im_loup;
 im_mouton = new ImageIcon("jeutest/mouton.gif" );
 //im_loup = new Image("jeutest/loup.gif" );
 im_moutondep = new ImageIcon("jeutest/moutonbiere.gif" );
 im_herbe = new ImageIcon("jeutest/herbe.gif" );  
 int viemout = 0;
 
 
 f = new Font("Courier", Font.BOLD, 20);
 g.setFont(f);
 
 if (compt == 0) {
 
     im_moutondep.paintIcon(this,g,100,100);
     try { Thread.sleep(1000);} catch (Exception ex){};
     g.setColor(Color.black);
     g.fillRect(0,0,largeur+10,hauteur+80);
     g.setColor(Color.white);
     g.drawString("Jeu LOUP-AGNEAU",120,170);
     try { Thread.sleep(1000);} catch (Exception ex){};
     
     g.setColor(Color.black);
     g.fillRect(0,0,largeur+10,hauteur+80);
     g.setColor(Color.white);
     g.drawString("Presente par",120,170);
     try { Thread.sleep(2000);} catch (Exception ex){};
     
     g.setColor(Color.black);
     g.fillRect(0,0,largeur+10,hauteur+80);
     g.setColor(Color.white);
     g.drawString("Coupat Julien",120,120);
     g.drawString("ET",140,140);
     g.drawString( "Fernandes Francois",115,160);
     try { Thread.sleep(2000);} catch (Exception ex){};
     repaint();
     compt++;
     return;
 }
 
     if (compt == 1) {
     g.setColor(getParent().getBackground());
     g.fillRect(0,0,largeur+10,hauteur+80);
     
     g.setColor(getBackground());
     g.fillRect(0,0,largeur+10,hauteur+80);
 
     viemout = 0;
     
 
     // Dessin de l'environnement
     for (int i=0;i<envir.nblargeur;i++){
  for (int j=0;j<envir.nblargeur;j++){
      if (envir.p[i][j] == true){
   im_herbe.paintIcon(this,g,i*40,j*40);
      }
  }
     }
 
     // Dessin des moutons
     //g.setColor(Color.black);
     for (int i=0;i<envir.nbmouton;i++){
  if (envir.mouton[i].vie) {
      im_mouton.paintIcon(this,g,((envir.mouton[i].position.getx())*40),((envir.mouton[i].position.gety())*40));
       
  } // if
     } // for
     
     // dessin des loup
      for (int l=0;l<envir.nbloup;l++){
     
 im_loup = Toolkit.getDefaultToolkit().getImage("jeutest/loup.gif" );
c'est ici que je voudrais mettre ma gif
 g.drawImage(im_loup,(envir.lp[l].position.getx()*40),(envir.lp[l].position.gety()*40),40,40,this);
 repaint();
 //  im_loup[i].paintIcon(this,g,(envir.lp[l].position.getx()*40),(envir.lp[l].position.gety()*40));
 
      }
   
for (int v=0; v<envir.nbmouton;v++){
  if (envir.mouton[v].vie){
      viemout++;
  }
     }
     
 
     if (viemout == 0){
  compt = 2;
     }
        repaint();  
     }
 
 if (compt > 1){
     g.setColor(getBackground());
     g.fillRect(0,0,largeur+10,hauteur+80);
     g.setColor(Color.black);
     g.drawString("Partie terminée",100,150);
 }
     }
} //plateau

Reply

Marsh Posté le 17-05-2003 à 17:21:14   

Reply

Marsh Posté le 18-05-2003 à 02:36:27    

essaye :  
 

Code :
  1. JLabel gifLabel = new JLabel(new ImageIcon(getClass().getResource("/jeutest/loup.gif" )));


 
enfin je sais pas si ca va t aider dans ton cas mais a mon avis si tu passe par imageIcon t aura plus de probleme...


Message édité par veryfree le 18-05-2003 à 02:38:04
Reply

Marsh Posté le 19-05-2003 à 12:30:58    

ok, mais comment on fait pour la dessiner a un endroit precis ??

Reply

Marsh Posté le 19-05-2003 à 12:52:08    

bob_theking a écrit :

ok, mais comment on fait pour la dessiner a un endroit precis ??


 
ben j ai jamais vraiment fait ce genre e chose en java, le pro des canvas c'est gfive
 
mais on le vois plus trop  :sweat:

Reply

Marsh Posté le 19-05-2003 à 12:58:24    

veryfree a écrit :


 
ben j ai jamais vraiment fait ce genre e chose en java, le pro des canvas c'est gfive
 
mais on le vois plus trop  :sweat:  


 
+1 :sweat:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-05-2003 à 10:26:42    

Tadaaaam!! :D:D
 
Pour les gif animés, j'ai jamais trop fait ça...Enfin, si, mais c'était une grosse galère..
En gros, j'avais un machin truc qui insérait des images dans du texte, en AWT, et quand j'ai essayé de mettre des gifs animés dedans, ça marchait....pour un ou deux des gifs, mais pas pour tous!!  
 
Enfin, un truc que tu peux essayer, déjà, c'est d'ajouter un mouseListener sur ton bouzin, et de le faire redessiner dans la méthode mouseMoved(Point p) : si, après ça, l'image s'anime quand tu bouges la souris dessus, c'est que tu as besoin d'appeller repaint() pour animer ton gif....Ensuite, comment l'appeller....Ben, ça dépend : si tu utilises Swing, il faudra que tu crées une thread pour gérer le dessin de ton composant.. En AWT, c'est plus flou dans ma tête...
 
bah sinon, pour des trucs en AWT, et tout :  
 
 http://site.voila.fr/gfive/  
 
A venir, d'autres sources, du Swing, tout ça.


Message édité par gfive le 20-05-2003 à 10:28:19
Reply

Marsh Posté le 20-05-2003 à 10:37:23    

en fait g laisser mes images en Images et non pas en ImagesIcon
et en mettant des gif de plus petites taille (2ko) au lieu de celle que j'avais qui faissait 10ko elles sont animées pratiquement tout le temps comme si mon ordi ramait trop pour tout afficher a la fois (c un 1800+ avec geforce 4 ti 4200 lol)

Reply

Marsh Posté le 20-05-2003 à 10:39:30    

ouais, j'avais eu le même problème, en fait, avec mon machin, c'est pour ça qu'il animait pas tout.... En fait, la thread qui fait tourner ton truc a "pas le temps" d'animer les gifs, et de faire le reste du boulot à la fois, je pense...Mais j'en suis pas sûr!!  
 
 
Mais sinon, essaie un truc :  
 
Si ta classe s'appelle toto :
 
class Toto implements ImageObserver {
 
private Image tonimage;
/*... Ton code ..*/
 
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
if (img == tonimage) {
 repaint();
}
 
}
 
 
Pour peu que ton image ait été chargée par le toolkit, ça devrait donner qqchose...(au pire, enlève le test de "if img = tonimage" )
 
 


Message édité par gfive le 20-05-2003 à 10:59:03
Reply

Marsh Posté le 20-05-2003 à 16:18:38    

gfive est de retour \o/
(la video de lotr donne un 404 :()


Message édité par the real moins moins le 20-05-2003 à 16:22:59

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 20-05-2003 à 16:30:00    

ouais, je sais!! C'est un pote qui l'hébergait, et il s'est fait fermer son site à cause de la limite de dl dépassée! :D

Reply

Marsh Posté le 20-05-2003 à 16:30:00   

Reply

Marsh Posté le 20-05-2003 à 16:35:43    

gfive a écrit :

ouais, je sais!! C'est un pote qui l'hébergait, et il s'est fait fermer son site à cause de la limite de dl dépassée! :D

roh :/
tu me la files? :whistle:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 20-05-2003 à 16:39:07    

bah....40Mo, tu veux que je la mette où??

Reply

Marsh Posté le 20-05-2003 à 16:51:55    

gfive a écrit :

bah....40Mo, tu veux que je la mette où??  

ché pas, un compte free? :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 20-05-2003 à 17:13:33    

bah, sur le mien, ça va pas le faire : j'ai pôs 40 Mo! :D Mais je te le mettrai qqpart.
 
Envoie un mail là : gfive@altern.org je te tiendrais au courant.

Reply

Marsh Posté le 20-05-2003 à 17:30:22    

gfive a écrit :

bah, sur le mien, ça va pas le faire : j'ai pôs 40 Mo! :D Mais je te le mettrai qqpart.
 
Envoie un mail là : gfive@altern.org je te tiendrais au courant.


 
c quoi ste video :o ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed