GotoAndStop dans un mc qui est dans un mc !!

Messages postés
7
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
4 décembre 2007
- - Dernière réponse : cs_embalmer
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007
- 4 déc. 2007 à 18:31
Question un peu étrange, mais je n'arrive pas à simplement faire jouer le frame 1 d'un movie clip contenu dans un second movie clip.....

exemple:
CosmetiqueSub_mc.Cosme01_btn.onRelease = function() {
       prod_contenus_mc.cosmetique_cont_mc.gotoAndStop(1);         <-----ici ça ne fait rien :(
       FermeSMCosmetique();
}

Quelqu'un peut m'aider! ça doit être hyper simple, mais je ne vois plus rien à force de travailler longtemps sur un même projet hihi

Merci !




Valérie
Afficher la suite 

3 réponses

Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007
0
Merci
Slt,

En fait lorsque tu utilise un gestionnaire d'évènement du type onRelease, le mot clé this fait référence à l'objet qui fait utilise cet évènement, dans ton cas le bouton "Cosme01_btn". Il y a un moyen facile de savoir à quel "niveau" tu te trouve, c'est d'utiliser un simple trace(this);

CosmetiqueSub_mc.Cosme01_btn.onRelease = function() {
       trace(this); // renvoi _level0. Sub_mc.Cosme01_btn
       prod_contenus_mc.cosmetique_cont_mc.gotoAndStop(1);   
       FermeSMCosmetique();
}

Malheureusement tu ne pourra pas utiliser de chemin relatif
du type _parent._parent.prod_contenus_mc.cosmetique_cont_mc.gotoAndStop(1);  // Ne marchera pas

En revanche 2 moyens s'offre à toi utiliser le mot clé _root

CosmetiqueSub_mc.Cosme01_btn.onRelease = function() {
       _root .prod_contenus_mc.cosmetique_cont_mc.gotoAndStop(1); 
       FermeSMCosmetique();
}

ou alors en utilisant une variable pour faire réfence à la racine (surtout utile lors de la création de classe personnalisée, mais ça c'est un autre sujet).

var racineAnim:MovieClip = this; // fait réfrence au level0 si on est effectivement au level0.
CosmetiqueSub_mc.Cosme01_btn.onRelease = function() {
      racineAnim.prod_contenus_mc.cosmetique_cont_mc.gotoAndStop(1); 
       FermeSMCosmetique();
}

++
Commenter la réponse de cs_embalmer
Messages postés
7
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
4 décembre 2007
0
Merci
je ne saisi pas pourquoi je dois partir de la racine...si je suis dans le movie clip juste avant ceux que j'appelle, il n'y a pas de problème habituellement ? C'est pour le trace que je dois faire ça ?

Et pour avoir le bon niveau, j'ai meme utiliser l'outil qui pointe vers l'objet que j'ai besoin (la petite cible là...il me mettait un this justement) et ça ne fonctionnait pas (je ne met quasiment pas de this normalement et ça fonctionne très bien d'habitude) mais là, avec ou sans, il ne faisait rien ce bouton (en fait, quand je testais l'animation..je n'ai pas essayé de faire un trace par contre pour voir ce qui se passait...)

Valérie
Commenter la réponse de valou819
Messages postés
120
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
10 décembre 2007
0
Merci
en fait tu n'est pas obligé de partir de la racine, tu peux par exemple dans une variable stocker une réferénce au clip que tu veux modifier, du moment que tu n'est pas dans le gestionnaire d'évènement.

var leClip:MovieClip = this.prod_contenus_mc.cosmetique_cont_mc;
CosmetiqueSub_mc.Cosme01_btn.onRelease = function() {
      leClip.gotoAndStop(1); 
       FermeSMCosmetique();
}

En générale je stocke la racine car cela me permet de pouvoir à partir d'un seule variable, accéder à tous les clips.
Perso je déconseille l'utilisation de l'outil de ciblage des clips pour 2 raisons :
<li>Comme tu viens de t'en rendre compte il ne prend pas en compte toutes les contraintes liés au script.</li><li>Il est important pour le dévelloppeur de connaitre la hiérarchie de ses objets (dans le cas de flash les movieClip  le + souvent)</li>nb : Oublie ce que j'ai dis sur le trace, en effet ça ne colle pas au problème... halala c'est ça de répondre trop vite

++
Commenter la réponse de cs_embalmer