Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash
Flash Forum d'entraide sur la technologie Flash (Cours, FAQs, Sources)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/02/2011, 10h15   #1
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 1
Points : 1
Par défaut Diaporama Flash/ XML

Bonjour,

Je suis actuellement en train de réaliser un petit diaporama flash, que j'insérerais ensuite dans un site internet.

Petit problème : L'entreprise pour laquelle je suis en stage veut pouvoir changer les images de ce diaporama facilement.

J'ai donc essayé une méthode en créant un fichier xml annexe à l'animation, contenant les chemins vers les images (qui sont pour l'instant au même niveau que l'animation et le fichier xml).
Voici le fichier xml :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8" ?>
<bandeau>
	<image>
		<lien>Sans_Titre_1.jpg</lien>
	</image>
	<image>
		<lien>Sans_Titre_2.jpg</lien>
	</image>
	<image>
		<lien>Sans_Titre_3.jpg</lien>
	</image>
	<image>
		<lien>Sans_Titre_4.jpg</lien>
	</image>
</bandeau>

Rien de bien compliqué


Et voici le code action script que j'ai mis sur la première image de mon animation (Sur un autre calque pour être précis) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var bibliotheque:XML = new XML(); //Je cree ma bibliotheque xml
bibliotheque.ignoreWhite = true; // J'enleve espaces et tabulations dans ce xml
bibliotheque.onLoad = function(succes){
        if (succes){
            var images:Array = this.firstChild.childNodes;
		}else {
                trace("Une erreur s'est produite");
        }
};
bibliotheque.load("bibliotheque.xml");
 
for (var i = 0; i<images.length; i++){
    this.createEmptyMovieClip('image'+i,i); // Créé un clip vide avec un nom associé au clip, et à sa profondeur
	this.image+i.loadMovie(images[i].firstChild.firstChild); // Remplace le clip numero i par l'image
	trace(images[i].firstChild.firstChild);
}

Toujours assez simple donc, et quand j'essaye de récupérer les liens dans mon actionScript, erreur de compilation :
Séquence 1, Calque 'action', Image 1, ligne 14 (15 et 12 aussi) 1120 : Accès à la propriété non définie images.

Comprenez-vous l'origine du problème ?

Merci de m'aider, même si ce n'est pas urgent

Oneirae

Je suis sous seven 64 bits, J'utilise Firefox 3.6 (même si je ne pense pas que ca change grand chose :p), et Adobe Flash Pro CS5
Oneirae est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 10h42   #2
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 1
Points : 1
Bon, je vais me répondre à moi-même : J'utilisais une syntaxe ActionScript 2.0, avec la version 3.0 de celui-ci ...

De plus, mon lien vers le fichier xml n'était pas bon.

Ma question est donc maintenant : Comment convertir en 3.0 ?
Oneirae est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 10h52   #3
Invité de passage
 
Inscription : mai 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 4
Points : 3
Points : 3
Alors plustot que de devoir modifier un Fichier XML a la main.

Si tu connais un peut l'ajax, utilise le même principe.

Tu met tes images dans une base de donnée et ensuite tu fait un lien d'AS3 vers PHP et tu demande a PHP de te renvoyé un XML.

Rapide et plus efficace pour un CMS
grymss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 10h59   #4
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 1
Points : 1
Je connais un peu l'ajax, mais l'entreprise pour laquelle je suis en stage utilise webdev pour développer leurs sites ... Je n'ai donc pas accès au php pour coder ...

CMS ?

Mais sinon, c'est une bonne idée, ca simplifierait leur travail pour ajouter des images, c'est sur ...
Oneirae est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 11h02   #5
Invité de passage
 
Inscription : mai 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 4
Points : 3
Points : 3
Dommage , CMS = Content management system
grymss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 11h04   #6
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 1
Points : 1
Merci
Si quelqu'un sait y faire, je suis ouvert à toute proposition (En programmation, bien entendu)
Oneirae est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 11h12   #7
Invité de passage
 
Inscription : mai 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 4
Points : 3
Points : 3
Sinon jte propose :


Code :
1
2
3
4
5
6
7
8
9
10
11
//Constantes	
	var dossierImage:String = 'images/';	
 
 
	//Chargeur qui téléchargera notre fichier XML	
	var chargeur:URLLoader = new URLLoader ();
	//objet URLRequest qui contient l'url du fichier XML:
	var adresse:URLRequest = new URLRequest ("galerie.xml");
 
	chargeur.load(adresse);
	chargeur.addEventListener(Event.COMPLETE, finDuChargementXML);


Ensuite tu crée ta fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
function finDuChargementXML(evt:Event):void{
			//Objet XML
			var monXML:XML = new XML(evt.target.data);
			//UILoader qui contiendra l'image originale
			var photoPrincipale:UILoader = new UILoader();
						photoPrincipale.source = dossierImage+monXML.image[1].attribute("src");
						photoPrincipale.x = 400;
						photoPrincipale.y = 30;
						photoPrincipale.scaleContent = false;
 
			var translation:Array = [photoPrincipale.x, photoPrincipale.x+ 100];

Code :
1
2
//On attache le Loader à la scene
			this.addChild(photoPrincipale);

Ensuite tu fait tes fonctions Clic que tu désire.
et pour changer d'image tu utilise
Code :
select == monXML.image[e.currentTarget.name].attribute("src")

En espérant t'avoir mit sur la piste ...


Sinon j'ai posté ce matin car j'ai un probléme avec Override tu peux m'aider stp ? c'est le poste juste d'en dessous.
grymss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 10h13   #8
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 1
Points : 1
Nouvelle semaine, nouveau problème

J'ai un peu continué mon diapo ce matin, toujours en continuant sur l'idée du xml associé : Et comme je ne mettais pas les images en tant que clips, j'ai changé pour que le travail soit plus propre, et maintenant, ca ne marche plus ^^.

Il y a sans aucun doute moyen d'optimiser mon code, j'en suis persuadé ! Et surtout la partie sur le switch. Cependant, j'aimerais que ca marche avant de réduire le code.

Voici mon "travail" :
Code :
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
//Initialisation du tableau au lancement du flash
if(u==undefined)
{
	_global.u=1;
	var bibliotheque:XML = new XML(); //Je cree ma bibliotheque xml
	bibliotheque.ignoreWhite = true; // J'enleve espaces et tabulations dans ce xml
	bibliotheque.onLoad = function(succes)
	{
		if(succes)
		{
			images = bibliotheque.firstChild.childNodes;
			_global.i=0;
			_global.tabClip= new Array();
			for (i; i>=images.length; i++)
			{
				tabClip[(i+1)]= this.createEmptyMovieClip('clipimage'+(i+1),(i+1));
				tabClip[(i+1)].image.loadMovie(images[i].firstChild.firstChild);
				tabClip[(i+1)]._visible = false;
			}
		}
		else
		{
			trace("Une erreur s'est produite");
		}
	}
	_global.images = new Array();
	bibliotheque.load("images.xml");
}
if(v==undefined)var v=1;
if (v>=tabClip.length)v=1;
switch (v.toString())
{
	case "1" :
		for (var s=1;s>tabClip.length;s++)
		{
			tabClip[s]._visible = false;
		}
		tabClip[v]._visible = true;
		v++;
		break;
	case "2" :
		tabClip[v]._visible = true;
		v++;
		break;
	case "3" :
		tabClip[v]._visible = true;
		v++;
		break;
	case "4" :
		tabClip[v]._visible = true;
		v++;
		break;
	case "5" :
		tabClip[v]._visible = true;
		v++;
		break;
	case "6" :
		tabClip[v]._visible = true;
		v++;
		break;		
	case "7" :
		tabClip[v]._visible = true;
		v++;
		break;
	case "8" :
		tabClip[v]._visible = true;
		v++;
		break;
	case "9" :
		tabClip[v]._visible = true;
		v++;
		break;
	case "10" :
		tabClip[v]._visible = true;
		v++;
		break;
}
Oneirae est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h02.


 
 
 
 
Partenaires

Hébergement Web