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