Rechercher : dans
Par :

Problème texte dynamique (flash/actionscript)

Dernière réponse le 7 avr 2008 à 23:06:48 iceberg7791, le 4 mar 2008 à 11:32:41 
 Signaler ce message aux modérateurs

Bonjour à tous.

J'ai créer un diaporama sous Flash8, avec la méthode de Loader appellant des images situées dans un dossier a la racine de mon site; dont voici le code:

- Sur la scène:var maVariable;
maVariable=1;
diap_loader.contentPath = "PICS/AFFPICS/image1.gif";
- Sur le bouton gauche: on(press){
maVariable--;
if(maVariable<=0){
maVariable=4;
}
diap_loader.contentPath = "PICS/AFFPICS/image"+maVariable+".gif";
}

- Sur le bouton droit: on(press){
maVariable++;
if(maVariable>=5){
maVariable=1;
}
diap_loader.contentPath = "PICS/AFFPICS/image"+maVariable+".gif";
}

J'aimerai inclure un bloc texte dynamique qui commenterai mes images en puisant le texte dans un dossier à la racine du site.
Je suis débutant sur flash et je galère sur le code qui me permettrai d'y arriver. Quel est le code adéquate pour cela?

Merci d'avance .

Configuration: Mac OS X
Firefox 2.0.0.12

1

Doggydok, le 13 mar 2008 à 22:30:02
  • +1

Bonjour,

je suis occupé à créer la même chose.
Je vais utiliser le principe suivant :

je fais un tableau excel avec les commentaires de mes photos.

Je le sauve en format txt.
je connais 2 possibilités pour le faire.
Soit je concatène mes données sur une feuille excel que je sauve en txt, soit j'utilise un script VB pour écrire mon fichier txt.
La première solution est assez simple et ne demande pas de connaissance de programmation.
La deuxième est plus automatisée et plus sûre (à partir du moment où le script est correct).

Je n'ai plus qu'à télécharger les données dans l'animation.

Dès que j'ai un résultat (j'ai déjà commencé), je te fais signe.

Salutations

Répondre à Doggydok

2

Doggydok, le 14 mar 2008 à 15:00:01

Bonjour,

voilà, j'ai terminé.
Comme tu es utilisateur anonyme, j'attends un signe de vie de toi, auquel cas je te donne volontiers ma solution à ton problème.

Salutations

Répondre à Doggydok

3

iceberg7791, le 14 mar 2008 à 20:16:40
  • +1

Bonjour,

Désolé d'avoir mis un peu de temps à répondre.
Pour etre franc j'ai pas tout pigé à tes solutions, mais je suis réellement en galère pour arriver à faire ce diaporama comme expliquer ci-dessus.

Si tu le veux bien, je prend volontier la technique qui te parait la mieux, sachant que je debute en Action Script.

Merci

Sincèrement

Répondre à iceberg7791

4

Doggydok, le 15 mar 2008 à 00:07:01

Bonjour,

tu pourras trouver sur le site suivant, à la rubrique "Photothèque", mon diaporama avec une légende pour chaque photo.

http://barochavo.be

Pour commencer, je te propose d'abord de créer un fichier txt avec un début de tes données.
Pour cela, il y a plusieurs solutions.

La première solution est de créer ton fichier txt avec le bloc-notes.
Nous allons définir nos variables dans cette forme "commentaire1=Commentaire de la photo 1" qui définit le commentaire de la première photo.
De même pour la deuxième photo, tu auras ceci : "commentaire2=Commentaire de la photo 2".
Pour séparer les deux variables et leur valeur, tu les sépares avec le caractère "&" ; ce qui te donnera pour commencer ton fichier txt :

commentaire1=Commentaire de la photo 1&commentaire2=Commentaire de la photo 2
Une fois terminé tu sauvegardes sous txt en choisissant l'option UTF-8.
Tu peux appeler ton fichier "Commentaires photos.txt".

Voilà pour un début.

Je t'explique la suite au prochain épisode.

Salutations

Répondre à Doggydok

6

Doggydok, le 17 mar 2008 à 17:25:26

Bonjour,

voici la suite.

Nous avons donc notre fichier txt avec nos données. Passons à flash.
Je commence par créer 4 calques de 15 images.

1. "Actions" pour recevoir les scripts ;
2. "Boutons" pour recevoir les boutons ;
3. "Loader" pour recevoir le composant Loader ;
4. "Commentaires" pour recevoir le champ de texte dynamique.

Sur le calque "Boutons", je place deux boutons, un pour avancer d'une image et l'autre pour reculer. On peut prendre par exemple des boutons qui se trouvent dans la bibliothèque commune ("gel left" et "gel right"sont pas mal !).

Sur le calque "Loader," je place un composant Loader que j'appelle "diap_loader".
Sur le calque "Commentaires", je place un champ de texte dynamique que j'appelle "commentaire".

Passons au script.
Nous allons d'abord charger les données, c'est-à-dire charger le fichier txt.

loadVariables("Commentaires photos.txt", _root);

Ensuite nous allons déclarer une variable qui sera le compteur.

var maVariable;
maVariable = 1;

Ensuite, nous téléchargeons la première photo dans le loader.

diap_loader.contentPath = "PICS/AFFPICS/image1.JPG";

Dans la dernière frame du calque "Actions" nous plaçons une image clé vide. Dans celle-ci nous attribuons au champ texte le commentaire de la première photo.

_root.commentaire.text = _root.comment1;

Ensuite nous arrêtons l'animation avec un stop();

Prochain épisode, les explications, si nécessaire, sur ce que l'on vient de faireet les scripts des boutons.

Salutations

Répondre à Doggydok

7

Doggydok, le 19 mar 2008 à 12:55:57

Bonjour,

dans une heure, je suis en vacances et je pars à l'étranger.
Il faudra attendre mon retour, soit le 31 mars pour avoir la suite.

Bonne vacances de Pâques !
(En Belgique elles s'étalent du 22/03 au 06/04).

Répondre à Doggydok

8

iceberg7791, le 20 mar 2008 à 12:38:03

Bonjour Doggydok,

Déjà merci pour ton code (j'ai eu le temps d'appliquer encore faute de temps mais je vais m'y remettre, histoire de voir si il me faut plus d'explication) et bonne vacances de pâque.
Je te tiens au courant.

Sincèrement.

Répondre à iceberg7791

9

iceberg7791, le 25 mar 2008 à 11:52:49

Salut Doggydok,

J'espère que ton weekend end c'est bien passé.

Je reviens vers toi car j'ai tester ta méthode et je n'arrive pas à la faire marcher.

1) " Une fois terminé tu sauvegardes sous txt en choisissant l'option UTF-8" je n'ai pas cette option, comment fais tu?
2) " Je commence par créer 4 calques de 15 images." pourquoi pas 4 calques avec une seule image?
3) lorsque je clic sur les boutons les images ne s'enchainent pas (cela me semble logique puisque rien est définie sur les boutons pour passer à la seconde images), pourquoi?
4) j'ai rien qui s'affiche dans le texte dynamique mais c'est peut être lié au fait que j'ai rien compris à la dernière partie et que j'ai pas du faire ce qu'il fallait.
"Dans la dernière frame du calque "Actions" nous plaçons une image clé vide. Dans celle-ci nous attribuons au champ texte le commentaire de la première photo.
_root.commentaire.text = _root.comment1;
Ensuite nous arrêtons l'animation avec un stop(); "

Voila j'espère que c'est assez clair pour toi toute ces questions mais je galère vraiment.

Merci

Sincèrement

Répondre à iceberg7791

10

Doggydok, le 31 mar 2008 à 22:29:32

Bonjour Iceberg7791,

me voilà de retour des sports d'hiver! Super la neige cette année !

Bon, je réponds en vitesse à tes questions.

Question 1 :
Je vois que tu est sur Mac OS. Moi je suis sur Windows XP et le plus simple dans ce cas est d'utiliser le bloc-notes. Maintenant en Mac OS, je regarderai au boulot. Je sais qu'il existe un programme pour éditer les fichiers txt mais je ne sais plus comment il s'appelle et s'il est possible de choisir le code du fichier txt avec.

Question 2 :
Par principe, je crée toujours mes projets (qui sont quand même des animations) avec un minimum d'images (frames). Et si je ne veux pas que l'animation tourne en boucle, je crée une image-clé vide dans la dernière image (frame) de mon animation (si tu ne sais pas comment faire, poses-moi la question ou vas voir l'aide) et j'y met un stop(). Ceci permet parfois d'éviter des problèmes. Ce qui est le cas ici.
En effet, il faut dans ce cas-ci laisser le temps de télécharger le fichier txt par l'animation avant d'en assigner les valeurs téléchargées à tes champs de texte dynamique. C'est pourquoi, dans ta première image de ton scénario, tu mets la commande de téléchargement et dans la dernière, avant le stop(), tu mets la commande qui assigne une valeur téléchargée à ton champ de texte dynamique. Sinon, il n'y a rien dans ton champ de texte dynamique.

Question 3 :
Tout à fait logique puisque pas encore de script pour les boutons. Ce sera le sujet du prochain message.

Question 4 :
voir réponse à la question 2.

En bref :
commences absolument par créer des calques de plusieurs images (frames). Peu importe le nombre, du moment qu'il y en ai assez pour que le fichier txt soit complètement téléchargé avant toute opération faisant appel aux valeurs contenues dans ton fichier txt.
Si tu suis les instructions précédentes, ça doit fonctionner et dès que cela fonctionne, on passe à la suite.

Si tu as encore des questions ....

Salutations

Répondre à Doggydok

11

iceberg7791, le 7 avr 2008 à 09:10:49

Salut doggydok,

désolé pour le temps de réponse mais mes journées sont longues en ce moment! Merci pour toutes tes explications j'ai tout compris et tout marche bien. je suis pret pour la suite de tes explications!

Sincèrement.

Répondre à iceberg7791

12

Doggydok, le 7 avr 2008 à 13:26:38

Bonjour,

Suite et fin...

il ne reste plus qu'à complèter les scripts des boutons avec une ligne donnant la nouvelle valeur au champ de texte dynamique, à savoir : _root.commentaire.text = eval("_root.comment"+maVariable);

Ce qui donne :
- Pour le bouton gauche:

on(press){
maVariable--;
if(maVariable<=0){
maVariable=4;
}
diap_loader.contentPath = "PICS/AFFPICS/image"+maVariable+".gif";
_root.commentaire.text = eval("_root.comment"+maVariable);
}

- Pour le bouton droit :

on(press){
maVariable++;
if(maVariable>=5){
maVariable=1;
}
diap_loader.contentPath = "PICS/AFFPICS/image"+maVariable+".gif";
_root.commentaire.text = eval("_root.comment"+maVariable);
}

Voilà, c'est tout !

Astuce: ici, ton diaporama est conçu pour accueillir 4 photos puisque ta variable compteur "maVariable" revient à la valeur 1 quand elle dépasse la valeur 4. Ceci veut dire que lorsque tu vas vouloir rajouter des photos, tu vas être obligé à chaque fois d'éditer ton fichier fla pour adapter les scripts de tes deux boutons !

Pour éviter ça, la solution est de définir une variable reprenant le nombre de photos. Cette variable, tu vas la placer dans ton fichier txt. Appelons-la par exemple "totalDia". Ouvrons notre fichier txt et ajoutons la variable tout au début du fichier sous la forme: &totalDia=4

Nous avons alors ceci dans le fichier txt :
&totalDia=4&comment1=photo 1&comment2=photo 2&comment3=Photo 3&comment4=Photo 4

Ainsi, lors du rajout d'une photo dans le diaporama, il suffira d'ouvrir le fichier txt, de rajouter les commentaires et d'adapter la variable totalDia au nombre de photos.
Exemple : je rajoute une cinquième photo :
&totalDia=5&comment1=photo 1&comment2=photo 2&comment3=Photo 3&comment4=Photo 4&comment5=Photo 5

Il faut maintenant adapter les scripts des boutons pour faire intervenir la variable "totalDia"

Ce qui donne :
- Pour le bouton gauche:

on(press){
maVariable--;
if(maVariable<=0){
maVariable=totalDia;
}
diap_loader.contentPath = "PICS/AFFPICS/image"+maVariable+".gif";
root.commentaire.text = eval("_root.comment"+maVariable);
}

- Pour le bouton droit :

on(press){
maVariable++;
if(maVariable>totalDia){
maVariable=1;
}
diap_loader.contentPath = "PICS/AFFPICS/image"+maVariable+".gif";
root.commentaire.text = eval("_root.comment"+maVariable);
}

Salutations

Répondre à Doggydok

13

 iceberg7791, le 7 avr 2008 à 23:06:48

Merci beaucoup doggydok!!!
un tuto qui fonctionne nickel et des explications super clair, t'es un boss!!!

Bonne continuation et merci encore!!!

Répondre à iceberg7791

5

iceberg7791, le 15 mar 2008 à 17:58:45

Salut doggydok

Merci pour cette première partie! J'ai jeter un coup d'œil à ton diaporama et c'est exactement ce que je veux faire.
J'attend avec impatience la suite!!!

sincèrement

Répondre à iceberg7791