Forums Développement Multimédia

Aller au contenu

Problème portée de variable ?

CODE Actionscript

13 réponses à ce sujet

#1 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 20 November 2008 - 01:19 AM

Bonsoir,

Voici mon problème :

Je réalise une petite galerie d'image avec un chargement depuis une BDD via un script PHP.
Mes images sont chargées convenablement et je rajoute la possibilité de cliquer dessus pour les agrandir.. classique !

Seulement je n'arrive pas à faire en sorte que ce soit l'image associé à la vignette qui se charge, voici le code :

Action Script


myData.load("http://---------/realisations.php?cat=1");
myData.ref = this;
myData.onLoad = function(succes) {
if (succes) {

preloader_mc.removeMovieClip();
preloader_mc2.removeMovieClip();

for (var i = 0; i<this.cant; i++) {

if (_global.colonnes == 0) {
deport_colonne = 0;
}
if (_global.colonnes == 1) {
deport_colonne = 170;
}
if (_global.colonnes == 2) {
deport_colonne = 340;
}
if (_global.colonnes == 3) {
deport_colonne = 510;
}

this.ref.attachMovie("fond_presta", "fond_mc"+i, 0+i, {_x:280+deport_colonne, _y:_global.hauteurtotal});
this.ref.createEmptyMovieClip(("logo_mc"+i), (i+50));
this.ref["logo_mc"+i]._y = _global.hauteurtotal+12;
this.ref["logo_mc"+i].loadMovie("http://--------------/images/v2/"+this["mini_image"+i]);
var xScaleL:Tween = new Tween(this.ref["logo_mc"+i], "_alpha", Elastic.easeOut, 0, 100, 8, true);
var xScaleM:Tween = new Tween(this.ref["logo_mc"+i], "_x", Elastic.easeOut, 0, 292+deport_colonne, 1.5, true);

image = this["full_image"+i];

this.ref["fond_mc"+i].onRelease = function() {

_root.createEmptyMovieClip("container", 300);
_root.container.loadMovie("http://---------/images/v1/"+image);
_root.container._y = 15;
_root.container._x = 270;
var xScaleimage:Tween = new Tween(_root.container, "_alpha", Regular.easeOut, 0, 100, 2, true);

}


if (_global.colonnes<3) {
_global.colonnes = (_global.colonnes+1);
} else {
_global.colonnes = 0;
_global.hauteurtotal = (_global.hauteurtotal+126);
}
}

xScaleL.start();
xScaleM.start();
xScaleT.start();
xScaleQ.start();

}


};

La partie du code qui coince est celle ci :

Action Script

			image = this["full_image"+i];

this.ref["fond_mc"+i].onRelease = function() {

_root.createEmptyMovieClip("container", 300);
_root.container.loadMovie("http://---------/images/v1/"+image);
_root.container._y = 15;
_root.container._x = 270;
var xScaleimage:Tween = new Tween(_root.container, "_alpha", Regular.easeOut, 0, 100, 2, true);

}

Comment faire en sorte que mon this["full_image"+i]; soit lu dans la fonction et me permette donc de charger la bonne image ?

Merci d'avance pour votre aide précieuse !

Seb

Modifié par consequence, 20 November 2008 - 01:21 AM.


#2 falz22

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 116 messages

Posté 20 November 2008 - 10:56 AM

Salut, je me suis dis qu'entre seb on pouvait s'aider... icon_wink.gif

en fait le probleme c'est que ça doit toujours t'envoyer la derniere valeur de i je suppose... pour cela il faut attibuer une propriété a chaque élément.. comme ceci (non testé) :

Action Script


this.ref["logo_mc"+i].indice = i;

// pour l'utiliser + facilement
var indice = this.ref["logo_mc"+i].indice;

image = this["full_image"+indice];

this.ref["fond_mc"+i].onRelease = function() {

_root.createEmptyMovieClip("container", 300);
_root.container.loadMovie("http://---------/images/v1/"+image);
_root.container._y = 15;
_root.container._x = 270;
var xScaleimage:Tween = new Tween(_root.container, "_alpha", Regular.easeOut, 0, 100, 2, true);

}



#3 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 20 November 2008 - 12:05 PM

Merci pour ta réponse cher Seb !

Malheureusement ton idée ne semble pas fonctionner telle quelle.
Le soucis reste que comme tu l'as vu la globalité du code est dans une boucle initiée :

Action Script

for (_global.i = 0; i<this.cant; i++) {

donc la variable image se recrée à chaque passage de boucle, d'ou le code

Action Script

this["full_image"+i];


qui fonctionne très bien mais en dehors de la fonction que je cherche à créer :

Action Script

	this.ref["fond_mc"+i].onRelease = function() {

_root.createEmptyMovieClip("container", 300);
_root.container.loadMovie("http://www.unpointctout.com/clients/boris3d/images/v1/"+image);
_root.container._y = 15;
_root.container._x = 270;
var xScaleimage:Tween = new Tween(_root.container, "_alpha", Regular.easeOut, 0, 100, 2, true);

}

ce que j'aimerais intégrer c'est ça :

Action Script

_root.container.loadMovie("http://www.unpointctout.com/clients/boris3d/images/v1/"+this["full_image"+i]);

mais avec la bonne syntaxe parceque comme ça la variable i ne passe pas j'ai un undefined en retour..

Si tu as d'autres solutions !

Merci

Seb



#4 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 20 November 2008 - 15:19 PM

Salut.

Et comme ça ?

Action Script

this.ref["fond_mc"+i].onRelease = function() {
image = this;


#5 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 20 November 2008 - 15:34 PM

Salut,

Merci pour ta proposition qui donne ceci :

Action Script

_level0.fond_mc1
au lieu de 1.jpg (le _level.full_image1) par exemple qui devrait faire apparâitre mon image

mais c'est déja mieux d'undefined que j'obtenais avec mes tests..
et là au moins chaque bouton pointe vers son bon numéro..

On va y arriver !

D'autres idées ?

Et merci encore

Seb



#6 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 20 November 2008 - 15:45 PM

Ah non, me suis gouré de cible.

Action Script

this.ref["fond_mc"+i].indice = i;
this.ref["fond_mc"+i].onRelease = function() {
image = this._parent["full_image"+this.indice];
Et comme ça ?


#7 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 20 November 2008 - 16:02 PM

Citation (Jano 95 @ Nov 20 2008, 06:45 PM) Voir le message
Ah non, me suis gouré de cible.

Action Script

this.ref["fond_mc"+i].indice = i;
this.ref["fond_mc"+i].onRelease = function() {
image = this._parent["full_image"+this.indice];
Et comme ça ?


on revient sur undefined ..

Merci de ton aide

Seb

#8 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 20 November 2008 - 16:10 PM

Faut mettre un trace.

Action Script

this.ref["fond_mc"+i].indice = i;
this.ref["fond_mc"+i].onRelease = function() {
trace(this)//pour savoir où on est.
image = this._parent._parent["full_image"+this.indice];
et peut être rajouter un _parent.
Sinon (juste pour essai) : image = _root["full_image"+this.indice]; mais _root est fort déconseillé et à proscrire.


#9 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 20 November 2008 - 16:25 PM

Citation (Jano 95 @ Nov 20 2008, 07:10 PM) Voir le message
Faut mettre un trace.

Action Script

this.ref["fond_mc"+i].indice = i;
this.ref["fond_mc"+i].onRelease = function() {
trace(this)//pour savoir où on est.
image = this._parent._parent["full_image"+this.indice];
et peut être rajouter un _parent.
Sinon (juste pour essai) : image = _root["full_image"+this.indice]; mais _root est fort déconseillé et à proscrire.


Le trace lorsque je clique sur l'image 4 donne ceci :

Action Script

_level0.fond_mc4
et s'en suite undefined pour image ..

j'ai essayé ton autre solution en root et avec un parent en plus mais idem.

Précision, en dehors de la fonction, this["mini_image"+i] renvoi bien le nom de la petite image
puisqu'elle s'affiche sans problème sur la scène this["full_image"+i] devrait être sa grande soeur,
ce qui est le cas en dehors de la fonction.. mais plus à l'intérieur ou i prends à chaque fois la valeur max de i (fin de boucle)



#10 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 20 November 2008 - 16:37 PM

Citation (consequence @ Nov 20 2008, 04:25 PM) Voir le message
mais plus à l'intérieur ou i prends à chaque fois la valeur max de i (fin de boucle)

Oublies i, il faut remplacer i par this.indice dans la fonction.

As tu bien défini l'indice avec cette ligne : this.ref["fond_mc"+i].indice = i;

Citation (consequence @ Nov 20 2008, 04:25 PM) Voir le message
_level0.fond_mc4

Donc si tu as bien défini indice comme demandé ci dessus ça devrait être :
- this (c'est le bouton _level0.fond_mc4)
- _parent (pour remonter d'un niveau _level0)
- ["full_image"+this.indice] si celle-ci se trouve bien sur le level0.

image = this._parent["full_image"+this.indice];

si celle-ci se trouve bien sur le level0 car si elle se trouve dans un clip, ce sera image=lenomduclip["full_image"+this.indice];


#11 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 20 November 2008 - 16:59 PM

Citation (Jano 95 @ Nov 20 2008, 07:37 PM) Voir le message
Oublies i, il faut remplacer i par this.indice dans la fonction.

As tu bien défini l'indice avec cette ligne : this.ref["fond_mc"+i].indice = i;
Donc si tu as bien défini indice comme demandé ci dessus ça devrait être :
- this (c'est le bouton _level0.fond_mc4)
- _parent (pour remonter d'un niveau _level0)
- ["full_image"+this.indice] si celle-ci se trouve bien sur le level0.

image = this._parent["full_image"+this.indice];

si celle-ci se trouve bien sur le level0 car si elle se trouve dans un clip, ce sera image=lenomduclip["full_image"+this.indice];


Alors oui j'ai bien défini l'indice comme tu me l'as indiqué.
Ensuite mon image sera chargé avec un _root.container.loadMovie("http://----"+image);
Donc si je reprends ta question elle est chargée dans le clip container non ?
ce qui devrait donner image = container["full_image"+this.indice]; ?

J'avoue que je commence à être vraiment perdu là ! smile.gif



#12 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 20 November 2008 - 17:07 PM

Citation (consequence @ Nov 20 2008, 04:59 PM) Voir le message
Ensuite mon image sera chargé avec un _root.container.loadMovie("http://----"+image);

Donc l'image ne se trouve pas dans l'animation icon_rolleyes.gif
Donc this._parent["full_image"+this.indice] n'existe pas icon_confused.gif
Don image=l'adresse exacte de l'image et son nom. icon_wink.gif
Donc image="full_image"+this.indice+".jpg" ou un truc comme ça. icon_lol.gif


#13 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 20 November 2008 - 17:27 PM

Citation (Jano 95 @ Nov 20 2008, 08:07 PM) Voir le message
Donc l'image ne se trouve pas dans l'animation icon_rolleyes.gif
Donc this._parent["full_image"+this.indice] n'existe pas icon_confused.gif
Don image=l'adresse exacte de l'image et son nom. icon_wink.gif
Donc image="full_image"+this.indice+".jpg" ou un truc comme ça. icon_lol.gif


y'a de l'idée !!

j'ai fais comme ça : image = this.indice+".jpg" vu que le chemin complet est sur mon loadMovie.

ça marche oui et non, je charge effectivement des images différentes en fonction du bouton que je clique,
mais heureusement que mes images sont nommées 1.jpg 2.jpg etc.. car le nom ne vient pas du vrai nom de l'image
chargé depuis le script PHP this["full_image"+i]; mais de la variable i que tu associé à l'indice.
Pour info mon fichier php m'envoi une variable full_image0 = photo.jpg & full_image1 = monimage.jpg etc..
c'est donc ces variables qu'il faut que je transmette à l'intérieur de la fonction..

pas simple !

BANCO !! icon_lol.gif

Je viens de trouver :

Action Script


this.ref["fond_mc"+i].indice = this["full_image"+i]; // pour associer le nom de l'image qui arrive de ma requête php

this.ref["fond_mc"+i].onRelease = function() {

image = this.indice // puisque le .jpg est déja dans le nom de l'image et le chemin dans le loadMovie !

_root.createEmptyMovieClip("container", 300);
_root.container.loadMovie("http://------/v1/"+image);
_root.container._y = 15;
_root.container._x = 270;
var xScaleimage:Tween = new Tween(_root.container, "_alpha", Regular.easeOut, 0, 100, 2, true);

}


ça semble bien fonctionner, un grand grand merci à toi pour ton aide et ta perceverance !

Maintenant reste plus qu'à passer le texte qui accompagne la photo, faire en sorte qu'en cliquant dessus elle se ferme
et j'aurai ma galerie wink.gif

Merci encore !

Bonne soirée

Seb

#14 consequence

    Ceinture Jaune

  • Members
  • PipPip
  • 25 messages

Posté 24 November 2008 - 18:51 PM

Citation (consequence @ Nov 20 2008, 08:27 PM) Voir le message
y'a de l'idée !!

j'ai fais comme ça : image = this.indice+".jpg" vu que le chemin complet est sur mon loadMovie.

ça marche oui et non, je charge effectivement des images différentes en fonction du bouton que je clique,
mais heureusement que mes images sont nommées 1.jpg 2.jpg etc.. car le nom ne vient pas du vrai nom de l'image
chargé depuis le script PHP this["full_image"+i]; mais de la variable i que tu associé à l'indice.
Pour info mon fichier php m'envoi une variable full_image0 = photo.jpg & full_image1 = monimage.jpg etc..
c'est donc ces variables qu'il faut que je transmette à l'intérieur de la fonction..

pas simple !

BANCO !! icon_lol.gif

Je viens de trouver :

Action Script


this.ref["fond_mc"+i].indice = this["full_image"+i]; // pour associer le nom de l'image qui arrive de ma requête php

this.ref["fond_mc"+i].onRelease = function() {

image = this.indice // puisque le .jpg est déja dans le nom de l'image et le chemin dans le loadMovie !

_root.createEmptyMovieClip("container", 300);
_root.container.loadMovie("http://------/v1/"+image);
_root.container._y = 15;
_root.container._x = 270;
var xScaleimage:Tween = new Tween(_root.container, "_alpha", Regular.easeOut, 0, 100, 2, true);

}


ça semble bien fonctionner, un grand grand merci à toi pour ton aide et ta perceverance !

Maintenant reste plus qu'à passer le texte qui accompagne la photo, faire en sorte qu'en cliquant dessus elle se ferme
et j'aurai ma galerie wink.gif

Merci encore !

Bonne soirée

Seb


Rebonsoir,

Quelques questions sur le même script présenté ci avant :

- Comment faire en sorte que l'image chargée soit cliquable pour la faire disparaître ?
J'ai bien essayé un nouveau _root.container.onRelease etc.. mais ça ne marche pas.
Vu sur d'autres forum il faut être certain que mon image soit bien chargée..
- Comment récupérer la hauteur de l'image que je charge ? container._y me retourne 0 à chaque fois..

Si quelqu'un à des idée je suis tout disposé à tester ça ce soir !

Merci d'avance,

Seb



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)