Comment faire une itération sur le nom d'un movie clip ?
philoumg
Messages postés6Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 3 avril 2007
-
1 avril 2007 à 00:51
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 2008
-
2 avril 2007 à 15:28
Bonsoir,
Je reformule ma question :)
Comment faire une boucle avec for(), en créant les movie clip et en leur assignant des fonctions onPress ??
Mon code qui marche sans itération (quand je tape ligne par ligne):
//rend cliquable le MC vignette_1
vignette1_mc.onPress=function()
{
conteneur_mc._alpha=0;
conteneur_mc.loadMovie("accueil/photo"+1+".jpg");
transparence ();
}
//crée un MC dans le MC parent vignette1_mc et charge la vignette photo1.jpg
var image1_mc:MovieClip=vignette1_mc.createEmptyMovieClip("image1_mc",
vignette1_mc.getNextHighestDepth());
image1_mc.loadMovie("accueil/vignettes/photo"+1+".jpg");
A+
Philippe
A voir également:
Comment faire une itération sur le nom d'un movie clip ?
philoumg
Messages postés6Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 3 avril 2007 1 avril 2007 à 02:50
Bon je débute vraiment c'est tout simple...
for (var k=1; k<18; k++)
{
vignette.onPress=function()
{
conteneur_mc._alpha=0;
conteneur_mc.loadMovie("accueil/photo"+k+".jpg");
transparence ();
}
var image:MovieClip=vignette.createEmptyMovieClip("image"+k+"_mc",
vignette.getNextHighestDepth());
image.loadMovie("accueil/vignettes/photo"+k+".jpg");
}
par contre le onpress fonctionne (on voit la main apparaitre) mais l'image ne se charge pas (le lien est bon ça marche si j'ecrit les ligne une par une), peut être à cause de l'itération ?
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 20081 2 avril 2007 à 15:28
Salut,
J'ai fait exactement la même chose que toi (enfin je suppose) ... pour être sûr qu'on soit sur la même longueur d'onde, voici ce que j'ai fait :
J'ai créé un symbole qui contient : un champ texte dynamique et un bouton.
Le champs texte porte le nom d'occurence "titre" et le bouton : "bouton".
J'ai mis comme nom de liaison au clip principal : "bouton"
voici mon code mis sur la première frame du root :
Code : function creation(){
for(var numero:Number = 0; numero<10; numero++){
this.attachMovie("bouton", "bouton_" + numero, numero);
this["bouton_" + numero]._x = numero*20;
this["bouton_" + numero]._y = numero*10;
this["bouton_" + numero].titre.text = "bouton n°" + numero;
this["bouton_" + numero].bouton.onRelease = function(){
trace("miaou :: bouton n°" + numero + " :: valeur texte " + this._parent.titre.text);
}
}
}
trace("début de l'initialisation --- ");
creation()
trace("fin de l'initialisation --- ");
// Fin code
Quand je clique sur un bouton (le 5 par exemple), j'ai bien le texte : "miaou :: bouton n°10 :: valeur texte bouton n°5"
Il est normal que la première valeur renvoit 10 et que l'autre renvoit 5, vu que la variable numéro, à la fin de la fonction, a comme valeur 10.
Si tu veux que le bouton charge une photo quand on clique sur le bouton voici ce que tu dois mettre dans la fonction associée au onRelease :
Code : this["bouton_" + numero].bouton.onRelease = function(){
trace("miaou :: bouton n°" + numero + " :: valeur texte " + this._parent.titre.text);
this._parent.conteneur.removeMovieClip();
this._parent.createEmptyMovieClip("conteneur", 10);
this._parent.conteneur.loadMovie(("accueil/vignettes/photo"+k+".jpg"))
}
// Fin code
La fonction removeMovieClip va effacer l'image déjà présente dans le bouton (si on a cliqué pour la seconde fois), si tu ne veux pas qu'on puisse charger plusieurs fois l'image, il te suffit de mettre une condition l'en empêchant.
--------- Darkrats ---------
la loi est dure mais c'est la loi
-------- Infograpix --------