Pseudo-Archive Java :
Accueil -|- Visuel -|- Logistique -|- Applications réparties
La pseudo-archive Java est un service proposé par la SARL diaam informatique, et il est hébergé par la Sogid.
diaam informatique
Date sent:      	Fri,  6 Jul 2001 08:47:47 +0100
Subject:        	Gif Animé
From:           	"eddy.palisse1@worldonline.fr"<eddy.palisse1@worldonline.fr>
To:             	java@u-strasbg.fr
Send reply to:  	java@u-strasbg.fr

Bonjour, 

Existe t il des methodes pour gérer des gifs animés 
ou alors permettre de créer un gif animé à partir de 
plusieurs fichiers gif.

Merci par avance.

Eddy

     

Send reply to:  	<damien@viralgames.com>
From:           	"Damien Gigon" <damien@viralgames.com>
To:             	<java@u-strasbg.fr>
Subject:        	RE: Gif Animé
Date sent:      	Fri, 6 Jul 2001 16:39:03 +0400

Si tout ce que tu veux c'est un gif animé, pourquoi ne pas le faire
effectivement avec un outil graphique ?

-----Message d'origine-----
De : Domenici, Ludovic [mailto:Ludovic.Domenici@pfizer.com]
Envoyé : vendredi 6 juillet 2001 18:19
À : 'java@u-strasbg.fr'
Objet : RE: Gif Animé


voici un bout de code :
// Importation des classes des packages abstract window toolkit, Applet,
Util, Net, Lang import java.applet.*; import java.awt.*; import
java.util.*; import java.net.*; import java.lang.*;

public class MasterSonic extends Applet implements Runnable
{
 // Déclaration des variables pour les fonds d'écran (dont la fenetre de
l'applet elle même !)
 Param Parametres[]= new Param[2];
 int ChoixImage = 1;		// Choix par defaut de l'image de
fond d'ecran
 Image image= null;		// La resultante de tout ça !

 // Déclaration des variables pour les animations
 int NbAnim = 2;
 Param Anim[] = new Param[NbAnim];
 int ChoixAnim[] = new int[NbAnim];		// Choix par defaut
pour l'animation
 int	image_actuelle[] = new int[NbAnim];
 int	delay_image = 100;
 boolean BOUCLE;

 // Déclaration des variables pour la gestion des flots
 MediaTracker	 Traqueur[] = new MediaTracker[NbAnim];
 Vector	 Vecteur[] = new Vector[NbAnim];
 Thread	 timer;

 public void init()
 {
  // Initialisation du traqueur d'images
  URL Url[] = new URL[NbAnim];
  for ( int i = 0; i < NbAnim; i++)
  {
   Traqueur[i] = new MediaTracker(this);
   Vecteur[i] = new Vector();
   ChoixAnim[i] = i;
  }

 // Initialisation du tableau de fonds d'ecran
  // Fond 'Ecran
  Parametres[0]= new Param( size().width, size().height);
// => Taille de la fenetre de l'applet
//		Parametres[1]= new Param( 797, 100, "Images/imagciel");
  Parametres[1]= new Param( 797, 100, "Images/Ciel", "gif");

  // Implementation du chemin du fond d'ecran dans l'object
image
  image= getImage(getDocumentBase(),
Parametres[ChoixImage].Nom);
  Traqueur[0].addImage( image, 0);

 // Animation
  // Initialisation du tableau d'animations
  Anim[0] = new Param( 100, 100, "Animations/Halo/", "",1, 5);
//		Anim[0] = new Param( 59, 59, "Animations/Test/", "", "gif",
0, 5);
  Anim[1] = new Param( 59, 59, "Animations/Sonic/", "",
"gif",1, 6);

  // Récup du delai passé en argument
  String delai = getParameter("DELAI");
  if (delai != null)
   delay_image = 1000 /
Integer.valueOf(delai).intValue();

  for (int i = 0; i < NbAnim; i++)
  {
  // Implementation de l'url de la racine de l'animation 1
dans Url
   try
   {
    Url[i] = new URL(getDocumentBase(),
Anim[ChoixAnim[i]].Racine);
   }
   catch (MalformedURLException e)
   {
    ERREUR(e);
   }
  }

  BOUCLE = true;
  String boucleImages = getParameter("BOUCLE");
  if (boucleImages != null)
  try
  {
   BOUCLE = boucleImages.equals("true");
  }
  catch ( NullPointerException e)
  {
   ERREUR(e);
  }

  int dernier;

  for ( int z = 0; z < NbAnim; z++)
  {
   dernier = Anim[ChoixAnim[z]].Premiere_Image +
Anim[ChoixAnim[z]].Nb_Images;

  // Chargement des images de l'animation
   for (int i = Anim[ChoixAnim[z]].Premiere_Image; i <
dernier ; i++)
   {
    Image img = getImage( Url[z],
Anim[ChoixAnim[z]].Nom + i + "." + Anim[ChoixAnim[z]].Extension);
    Traqueur[z].addImage( img, 1);
    Vecteur[z].addElement(img);
   }
  }

  // Calcul des coordonnées pour l'affichage de l'animation au
centre de l'applet
  Rapport();
  Anim[0].PosY = 0;
  Anim[0].PosX = (size().height / 3) * 2;
  Anim[1].PosX = 0;
//		Anim[1].PosY = Parametres[0].Hauteur - Anim[0].Hauteur;
 }

 public void start()
 {
  timer = new Thread(this);
  timer.start();
 }

 public void stop()
 {
  if (timer != null)
   timer.stop();
  timer = null;
 }

 public void run()
 {

  for ( int i = 0; i < NbAnim; i++)
  {
   showStatus("Chargement des images de l'animation " +
( i + 1));
   try
   {
    Traqueur[i].waitForAll();
   }
   catch (InterruptedException e)
   {
    return;
   }
  }

  showStatus("Lecture de l'animation");

  for (int i = 0; i < NbAnim; i++) image_actuelle[i] =
Anim[ChoixAnim[i]].Premiere_Image;

  while (timer != null)
  {
   try
   {
    Thread.sleep(delay_image);
   }
   catch (InterruptedException e)
   {
    break;
   }
   repaint();

   for (int i = 0; i < NbAnim; i++)
   {
    if (image_actuelle[i] >= (Vecteur[i].size()
-1))
    {
     if (BOUCLE)  image_actuelle[i] =
Anim[ChoixAnim[i]].Premiere_Image;
     else break;
    }
    else image_actuelle[i]++;

    if ( i == 1)
    {
     Anim[i].PosX = Anim[i].PosX + 20;
     if ( Anim[i].PosX > ( size().width +
Anim[i].Longueur)) Anim[i].PosX = 0;
    }
   }

   showStatus(" Sonic by Cosm'X");
  }	// fin while
  showStatus("Animation terminée");
 }

 public void paint( Graphics graphique)
 {
 // Affichage du papier-paint
  for(int i=0; i<= ( Parametres[0].Longueur /
Parametres[ChoixImage].Longueur); i++)
  {
   for (int j=0; j<= (Parametres[0].Hauteur /
Parametres[ChoixImage].Hauteur); j++)
    {graphique.drawImage(image,
(i*Parametres[ChoixImage].Longueur), (j*Parametres[ChoixImage].Hauteur),
this);}
  }

 // Affichage des animations
  for (int i = 0; i <NbAnim; i++)
  {
  // Affichage de l'animation 1
   if (Traqueur[i].isErrorAny())
   {
    graphique.setColor(Color.red);
    graphique.fillRect( Parametres[i].PosX,
Parametres[i].PosY, Anim[ChoixAnim[i]].Longueur,
Anim[ChoixAnim[i]].Hauteur);
    return;
   }

   if (!Traqueur[i].checkAll())
    return;

   Image img =
(Image)Vecteur[i].elementAt(image_actuelle[i]);
   if (img != null)
   {
    graphique.drawImage(img, Anim[i].PosX,
Anim[i].PosY, this);
   }
  }
 }

 public void update(Graphics g)
 {
  paint (g);
 }

 // Calcul les coodonnées top et left pour l'affichage de l'animation au
centre de l'applet
 void Rapport ()
 {
  float Rap_fA;
  float Rap_tT;

  for ( int z = 0; z < NbAnim; z++)
  {
   Rap_fA= size().width / 2;
   Rap_tT= Anim[ z].Longueur / 2;
   Anim[z].PosX = (int)(Rap_fA - Rap_tT);
   Rap_fA=  size().height / 2;
   Rap_tT= Anim[ z].Hauteur / 2;
   Anim[z].PosY= (int)(Rap_fA - Rap_tT);
  }
 }

 void ERREUR(Exception e)
 {
  String Message = "Erreur : "+e;

  showStatus(Message);
  System.err.println(Message);
    }
}

-----Message d'origine-----
De: eddy.palisse1@worldonline.fr [mailto:eddy.palisse1@worldonline.fr]
Date: vendredi 6 juillet 2001 09:48 À: java@u-strasbg.fr Objet: Gif Animé


Bonjour,

Existe t il des methodes pour gérer des gifs animés
ou alors permettre de créer un gif animé à partir de
plusieurs fichiers gif.

Merci par avance.

Eddy

     

Date sent:      	Fri, 06 Jul 2001 15:40:06 +0200
From:           	willfried Matter <wmatter@nagora.com>
Send reply to:  	wmatter@nagora.com
Organization:   	Nagora Communication
To:             	java@u-strasbg.fr
Subject:        	Re: Gif Animé

J'ai un peu étudié le prb piour des jeux ou applets fun

En éval ou payant, la seule api supportant le gif animé
http://www.kcmultimedia.com/gifcanvas/

Autrement pour émuler du gif animé dans un composant java,
c'est comme un sprite dans un jeu,
la méthode paint (qui display le gif numéro untel)
de ton composant dépend
de l'état du composant, du numéro de séquence, du timer,
de la datetime qui fait évoluer le numéro de la séquence...

willfried Matter


> Existe t il des methodes pour gérer des gifs animés
> ou alors permettre de créer un gif animé à partir de
> plusieurs fichiers gif.
>
> Merci par avance.
>
> Eddy

     

From:           	"Domenici, Ludovic" <Ludovic.Domenici@pfizer.com>
To:             	"'java@u-strasbg.fr'" <java@u-strasbg.fr>
Subject:        	RE: Gif Animé
Date sent:      	Fri, 6 Jul 2001 10:18:38 -0400
Send reply to:  	java@u-strasbg.fr

voici un bout de code :
// Importation des classes des packages abstract window toolkit, Applet,
Util, Net, Lang import java.applet.*; import java.awt.*; import
java.util.*; import java.net.*; import java.lang.*;

public class MasterSonic extends Applet implements Runnable
{
 // Déclaration des variables pour les fonds d'écran (dont la fenetre de
l'applet elle même !)
 Param Parametres[]= new Param[2];
 int ChoixImage = 1;		// Choix par defaut de l'image de
fond d'ecran
 Image image= null;		// La resultante de tout ça !

 // Déclaration des variables pour les animations
 int NbAnim = 2;
 Param Anim[] = new Param[NbAnim];
 int ChoixAnim[] = new int[NbAnim];		// Choix par defaut
pour l'animation
 int	image_actuelle[] = new int[NbAnim];
 int	delay_image = 100;
 boolean BOUCLE;

 // Déclaration des variables pour la gestion des flots
 MediaTracker	 Traqueur[] = new MediaTracker[NbAnim];
 Vector	 Vecteur[] = new Vector[NbAnim];
 Thread	 timer;

 public void init() 
 {
  // Initialisation du traqueur d'images
  URL Url[] = new URL[NbAnim];
  for ( int i = 0; i < NbAnim; i++)
  {
   Traqueur[i] = new MediaTracker(this);
   Vecteur[i] = new Vector();
   ChoixAnim[i] = i;
  }

 // Initialisation du tableau de fonds d'ecran
  // Fond 'Ecran
  Parametres[0]= new Param( size().width, size().height);
// => Taille de la fenetre de l'applet
//		Parametres[1]= new Param( 797, 100, "Images/imagciel");
  Parametres[1]= new Param( 797, 100, "Images/Ciel", "gif");

  // Implementation du chemin du fond d'ecran dans l'object
image
  image= getImage(getDocumentBase(),
Parametres[ChoixImage].Nom);
  Traqueur[0].addImage( image, 0);

 // Animation
  // Initialisation du tableau d'animations
  Anim[0] = new Param( 100, 100, "Animations/Halo/", "",1, 5);
//		Anim[0] = new Param( 59, 59, "Animations/Test/", "", "gif",
0, 5);
  Anim[1] = new Param( 59, 59, "Animations/Sonic/", "",
"gif",1, 6);

  // Récup du delai passé en argument
  String delai = getParameter("DELAI");
  if (delai != null)
   delay_image = 1000 /
Integer.valueOf(delai).intValue();

  for (int i = 0; i < NbAnim; i++)
  {
  // Implementation de l'url de la racine de l'animation 1
dans Url
   try
   {
    Url[i] = new URL(getDocumentBase(),
Anim[ChoixAnim[i]].Racine);
   }
   catch (MalformedURLException e)
   {
    ERREUR(e);
   }
  }

  BOUCLE = true;
  String boucleImages = getParameter("BOUCLE");
  if (boucleImages != null)
  try
  {
   BOUCLE = boucleImages.equals("true");
  }
  catch ( NullPointerException e)
  {
   ERREUR(e);
  }

  int dernier;

  for ( int z = 0; z < NbAnim; z++)
  {
   dernier = Anim[ChoixAnim[z]].Premiere_Image +
Anim[ChoixAnim[z]].Nb_Images;

  // Chargement des images de l'animation 
   for (int i = Anim[ChoixAnim[z]].Premiere_Image; i <
dernier ; i++)
   {
    Image img = getImage( Url[z],
Anim[ChoixAnim[z]].Nom + i + "." + Anim[ChoixAnim[z]].Extension);
    Traqueur[z].addImage( img, 1);
    Vecteur[z].addElement(img);
   }
  }

  // Calcul des coordonnées pour l'affichage de l'animation au
centre de l'applet
  Rapport();
  Anim[0].PosY = 0;
  Anim[0].PosX = (size().height / 3) * 2;
  Anim[1].PosX = 0;
//		Anim[1].PosY = Parametres[0].Hauteur - Anim[0].Hauteur;
 }

 public void start()
 {
  timer = new Thread(this);
  timer.start();
 }

 public void stop()
 {
  if (timer != null)
   timer.stop();
  timer = null;
 }

 public void run()
 {

  for ( int i = 0; i < NbAnim; i++)
  {
   showStatus("Chargement des images de l'animation " +
( i + 1));
   try
   {
    Traqueur[i].waitForAll();
   }
   catch (InterruptedException e)
   {
    return;
   }
  }

  showStatus("Lecture de l'animation");

  for (int i = 0; i < NbAnim; i++) image_actuelle[i] =
Anim[ChoixAnim[i]].Premiere_Image;

  while (timer != null)
  {
   try
   {
    Thread.sleep(delay_image);
   }
   catch (InterruptedException e)
   {
    break;
   }
   repaint();

   for (int i = 0; i < NbAnim; i++)
   {
    if (image_actuelle[i] >= (Vecteur[i].size()
-1))
    {
     if (BOUCLE)  image_actuelle[i] =
Anim[ChoixAnim[i]].Premiere_Image;
     else break;
    }
    else image_actuelle[i]++;

    if ( i == 1)
    {
     Anim[i].PosX = Anim[i].PosX + 20;
     if ( Anim[i].PosX > ( size().width +
Anim[i].Longueur)) Anim[i].PosX = 0;
    }
   }

   showStatus(" Sonic by Cosm'X");
  }	// fin while
  showStatus("Animation terminée");
 }

 public void paint( Graphics graphique)
 {
 // Affichage du papier-paint
  for(int i=0; i<= ( Parametres[0].Longueur /
Parametres[ChoixImage].Longueur); i++)
  {
   for (int j=0; j<= (Parametres[0].Hauteur /
Parametres[ChoixImage].Hauteur); j++)
    {graphique.drawImage(image,
(i*Parametres[ChoixImage].Longueur), (j*Parametres[ChoixImage].Hauteur),
this);}
  }

 // Affichage des animations
  for (int i = 0; i <NbAnim; i++)
  {
  // Affichage de l'animation 1
   if (Traqueur[i].isErrorAny())
   {
    graphique.setColor(Color.red);
    graphique.fillRect( Parametres[i].PosX,
Parametres[i].PosY, Anim[ChoixAnim[i]].Longueur,
Anim[ChoixAnim[i]].Hauteur);
    return;
   }

   if (!Traqueur[i].checkAll())
    return;

   Image img =
(Image)Vecteur[i].elementAt(image_actuelle[i]);
   if (img != null)
   {
    graphique.drawImage(img, Anim[i].PosX,
Anim[i].PosY, this);
   }
  }
 }

 public void update(Graphics g)
 {
  paint (g);
 }

 // Calcul les coodonnées top et left pour l'affichage de l'animation au
centre de l'applet
 void Rapport ()
 {
  float Rap_fA;
  float Rap_tT;

  for ( int z = 0; z < NbAnim; z++)
  {
   Rap_fA= size().width / 2;
   Rap_tT= Anim[ z].Longueur / 2;
   Anim[z].PosX = (int)(Rap_fA - Rap_tT);
   Rap_fA=  size().height / 2;
   Rap_tT= Anim[ z].Hauteur / 2;
   Anim[z].PosY= (int)(Rap_fA - Rap_tT);
  }
 }

 void ERREUR(Exception e)
 {
  String Message = "Erreur : "+e;

  showStatus(Message);
  System.err.println(Message);
    }
}

-----Message d'origine-----
De: eddy.palisse1@worldonline.fr [mailto:eddy.palisse1@worldonline.fr]
Date: vendredi 6 juillet 2001 09:48 À: java@u-strasbg.fr Objet: Gif Animé


Bonjour, 

Existe t il des methodes pour gérer des gifs animés 
ou alors permettre de créer un gif animé à partir de 
plusieurs fichiers gif.

Merci par avance.

Eddy


C'est fini ! Retour à l'accueil de la pseudo-archive