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 11/10/2007, 00h23   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 2
Points : 2
Par défaut Problème d'images cliquables

Bonsoir,

Je réalise actuellement un diaporama en flash. Pour cela, j'utilise un fichier xml.
Le chargement des images se passent sans problème mais le problème survient quand je veux cliquer sur une image.
En effet, quand je clique sur n'importe quel image, il me charge toujours la même image, la dernière inséré dans mon fichier xml.
Comment faire pour que quand je clique sur n'importe quel image, on affiche l'image cliquée en grand format ?

Voici le code actionscript:
Code:

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
this.createEmptyMovieClip("diaporama", 0);
diaporama._y = 0;

this.createEmptyMovieClip("cadre", 1);
with(cadre){
	_y = 200;
	_x = 0;
	lineStyle(2, 0xD0D0D0, 100); //Définit le cadre de couleur grise.
	moveTo(10,10); // On se place au coin en haut à gauche 
	lineTo(512, 10); // Coin en haut à droite - lineTo(x, y)
	lineTo(512, 384); // Coin en bas à droite
	lineTo(10, 384); // Coin en bas à gauche
	lineTo(10, 10);// Et on retourne en haut à gauche 
}

var liste_photos:XML = new XML();
liste_photos.ignoreWhite = true;
liste_photos.load("diapos.xml");

liste_photos.onLoad = function(succes) {
	if(succes) {
	//Codes à éxécuter en cas de chargement du xml
		var noeudRacine = this.firstChild.childNodes;
		var longueur = noeudRacine.length;
		
		for(var i = 0; i<longueur; i++) {
			var img = noeudRacine[i].attributes.src; //Récupère le titre de l'image
			
			//Création d'un clip vide dans le clip "diaporama"
			diaporama.createEmptyMovieClip("image"+i, i+10);
			diaporama["image"+i]._xscale = diaporama["image"+i]._yscale = 5; //Redimension des images
			diaporama["image"+i].loadMovie(img); //Charge l'image
			
			//Positionnement des images
			diaporama["image"+i]._x = i*130;
			diaporama["image"+i]._y = 0;
			
			//Agrandissement des images quand on clique dessus
			diaporama.onRelease = function() {
				grand_format(img); //Problème: Affiche toujours la même image, ici "IM000698.jpg".
			}
		}
	}else {
		throw new Error("Erreur lors du chargement du XML");
	}
}

function grand_format(image){
	//Affiche l'image en grand format
	cadre._xscale = cadre._yscale = 25;
	cadre.loadMovie(image);
}
Et voici mon fichier xml :
Code:
Code :
1
2
3
4
5
6
7
8
9
 
<?xml version="1.0" ?>
<album>
<img src="IM000587.jpg" title="1"/>
<img src="IM000589.jpg" title="2"/>
<img src="IM000590.jpg" title="4"/>
<img src="IM000591.jpg" title="5"/>
<img src="IM000698.jpg" title="6"/>
</album>
Si quelqu'un pourrait m'aider, ce serait très sympa.
Merci d'avance
novice07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 21h12   #2
Membre actif
 
Inscription : septembre 2002
Messages : 165
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 165
Points : 171
Points : 171
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
this.createEmptyMovieClip("diaporama", 0);
diaporama._y = 0;

this.createEmptyMovieClip("cadre", 1);
with(cadre){
	_y = 200;
	_x = 0;
	lineStyle(2, 0xD0D0D0, 100); //Définit le cadre de couleur grise.
	moveTo(10,10); // On se place au coin en haut à gauche 
	lineTo(512, 10); // Coin en haut à droite - lineTo(x, y)
	lineTo(512, 384); // Coin en bas à droite
	lineTo(10, 384); // Coin en bas à gauche
	lineTo(10, 10);// Et on retourne en haut à gauche 
}

var liste_photos:XML = new XML();
liste_photos.ignoreWhite = true;
liste_photos.load("diapos.xml");

liste_photos.onLoad = function(succes) {
	if(succes) {
	//Codes à éxécuter en cas de chargement du xml
		var noeudRacine = this.firstChild.childNodes;
		var longueur = noeudRacine.length;
		
		for(var i = 0; i<longueur; i++) {
			var img = noeudRacine[i].attributes.src; //Récupère le titre de l'image
			
			//Création d'un clip vide dans le clip "diaporama"
			diaporama.createEmptyMovieClip("image"+i, i+10);
			diaporama["image"+i]._xscale = diaporama["image"+i]._yscale = 5; //Redimension des images
			diaporama["image"+i].loadMovie(img); //Charge l'image
			img.id = img
			//Positionnement des images
			diaporama["image"+i]._x = i*130;
			diaporama["image"+i]._y = 0;
			
			//Agrandissement des images quand on clique dessus
			diaporama["image"+i].onRelease = function() {
				grand_format(img); //Problème: Affiche toujours la même image, ici "IM000698.jpg".
			}
		}
	}else {
		throw new Error("Erreur lors du chargement du XML");
	}
}

function grand_format(image){
	//Affiche l'image en grand format
	cadre._xscale = cadre._yscale = 25;
	cadre.loadMovie(img.id);
}
ça devrait fonctionner, ça fait un bout de temps que je ne l'ai plus fait, mais si mes souvenirs sont bons, j'avais fait de cette façon, le problème est que flash ne garde pas en mémoire, sauf en donnant un indice (id) et en assignant le nom du fichier à l'indice.... tiens moi au courant si ça fonctionne de cette façon si tu veux bien..
eddy verpoorter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 23h09   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 2
Points : 2
Je te remercie de m'avoir répondu mais cela ne marche toujours pas.
Ton idée d'assigner un indice me semble bonne mais quand j'éxécute le code, mes images ne sont plus cliquables :

Le problème survient surement ici :
Code :
1
2
3
4
5
 
//Agrandissement des images quand on clique dessus
			diaporama["image"+i].onRelease = function() {
			grand_format(img); //Problème: Affiche toujours la même image, ici "IM000698.jpg".
}
J'ai essayé de remplacer diaporama.onRelease par diaporama["image"+i].onRelease, j'obtiens le message d'erreur suivant :
Error opening URL "file:///C|/Documents%20and%20Settings/Images/undefined"

Si tu peux m'aider, ce serait très gentil.
A+
novice07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 11h11   #4
Membre actif
 
Inscription : septembre 2002
Messages : 165
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 165
Points : 171
Points : 171
en relisant le code, je me rends compte qu'en fait, il faut assigner l'id à 'diaporama["image"+i]' et non à img.....

si ça ne marche toujours pas, envoie le fla, je ferai quelques tests, ça devrait fonctionner, je l'ai déjà fait pour un diapo, mais je n'utilisait pas de fonction pour l'agrandissement, à mon sens ça doit revenir du pareil au même......
eddy verpoorter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2007, 14h03   #5
Membre actif
 
Inscription : septembre 2002
Messages : 165
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 165
Points : 171
Points : 171
j'ai remanié un peu ton code, en effet, le problème venait du fait que le clip "diaporama" créé, n'était pas instancié, flash ne savait donc pas sur lequel on cliquait....j'ai donc créé un clip "diaporama" dans lequel j'ai inséré un clip nommé "testsymb" qui chargera l'image voulue......

ce clip étant créé, j'ai utilisé la méthode attachmovie, car celle-ci peut instancier un clip....

ça donne donc ceci:


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
//this.createEmptyMovieClip("diaporama", 0);
//diaporama._y = 0;
this.createEmptyMovieClip("cadre", 1);
with(cadre){
	_y = 200;
	_x = 200;
	lineStyle(4, 0xD0D0D0, 100);
	moveTo(10,10); // On se place au coin en haut à gauche
	lineTo(300, 10); // Coin en haut à droite
	lineTo(300, 300); // Coin en bas à droite
	lineTo(10, 300); // Coin en bas à gauche
	lineTo(10, 10);// Et on retourne en haut à gauche 
}
 
var liste_photos:XML = new XML();
liste_photos.ignoreWhite = true;
liste_photos.load("diapos.xml");
 
liste_photos.onLoad = function(succes) {
	if(succes) {
	//Codes à éxécuter en cas de chargement du xml
		var noeudRacine = this.firstChild.childNodes;
		var longueur = noeudRacine.length;
 
		for(var i = 0; i< longueur; i++) {
			var img = noeudRacine[i].attributes.src; //Récupère le titre de l'image
 
			//Création d'un clip vide dans le clip "diaporama"
			//diaporama.createEmptyMovieClip("image"+i, i+10);
			_root.attachMovie("diaporama","diaporama"+i, i + 10);
			_root["diaporama"+i]._xscale = _root["diaporama"+i]._yscale = 5; //Redimension des images
			_root["diaporama"+i].testsymb.loadMovie(img); //Charge l'image
			_root["diaporama"+i].id = img;
			trace(_root["diaporama"+i].id);
			//Positionnement des images
			_root["diaporama"+i]._x = i*130;
			_root["diaporama"+i]._y = 0;
 
			//Agrandissement des images quand on clique dessus
			_root["diaporama"+i].onRelease = function(teste) {
				cadre._xscale = cadre._yscale = 20;
				cadre.loadMovie(this.id);
 
			}
		}
	}else {
		throw new Error("Erreur lors du chargement du XML");
	}
}
eddy verpoorter est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h14.


 
 
 
 
Partenaires

Hébergement Web