Problème de cible avec clips imbriqués et placés avec une boucle for

pierro3f4 Messages postés 3 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 1 février 2009 - 31 janv. 2009 à 13:30
pierro3f4 Messages postés 3 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 1 février 2009 - 1 févr. 2009 à 22:15
Bonjour,
Je suis tout jeune graphiste et il m'arrive de plus en plus souvent de travailler avec Flash CS3. En général, mes codes sont plutôt de l'ordre de la bidouille, le but étant que ca marche, si par malheur ca marche pas jpasse faire un tour ici et je trouve toujours un sujet en rapport avec ce que je cherche.
Mais alors aujourd'hui ca fait plusieures heures que je tourne et je commence à m'arracher les cheveux! C'est étonnant car je suis certain que c'est une question que d'autre ont dut se poser avant moi, bref , c'est l'occasion de sauter le pas et de m'inscrire dans les discutions de ce forum...

Je vais essayé d'être le plus claire possible (mon vacabulaire flash n'est pas toujours des plus exacts).
Je me suis fait un clip exporté "conteneur" à l'intérieur duquel j'ai imbriqué deux clips nommé "clip1" et "contenu1". A l'intérieur de "contenu1" se trouve "contenu2" où se trouve "bouton".
Pour résumer, voila ma stucture :

_root
    clip1
    conteneur
           contenu1
                  contenu2
                         bouton

j'utilise ensuite une boucle pour pour placés trois clips qui sont des occurences de conteneur et dont les noms d'occurences sont générés à partir d'un tableau, voici mon code :

var tableaum:Array = new Array("villette", "sysD", "animdistillerie");

numerodutableaum = 0;
var imagesmulti = tableaum[numerodutableaum];

abcisse=10

for (i=0; i<3; i++) {
    numerodutableaum = i;
    imagesmulti = tableaum[numerodutableaum];
   
    this["conteneur"+imagesmulti] = this.attachMovie('conteneur', 'conteneur'+imagesmulti, this.getNextHighestDepth());
    this["conteneur"+imagesmulti]._x=abcisse
    abcisse=abcisse+200;
   
    conteneurimage = this["conteneur"+imagesmulti].createEmptyMovieClip("conteneurimage", 0);
    this["conteneur"+imagesmulti].conteneurimage.loadMovie("imagesmultimedia/"+imagesmulti+".jpg",0);
   
    this["conteneur"+imagesmulti].contenu1.contenu2.onRelease=function(){
        trace("on a cliqué");
    }
}

Jusqu'ici pas de problème, la fonction trace marche parfaitement. Simplement, j'aimerai agir sur "clip1" (sur sa largeur par exemple) lorsque je clique sur "bouton". C'est bête mais je ne connais pas la syntaxe pour remonter à une cible lorsque l'on utilise la structure this[occurence].
En Outre, je ne veux pas utiliser _root parceque cette animation sera ensuite loader dans une autre.

Merci infiniment pour vos réponses!

2 réponses

pierro3f4 Messages postés 3 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 1 février 2009
31 janv. 2009 à 18:44
please, je sais plus quoi faire...
J'ai encore passé l'aprèm la dessus et la j'ai vraiment plus d'idée...
La solution pourrait être un truc du style :

this["conteneur"+imagesmulti].contenu1.contenu2.onRelease=function(){
        this._parent._parent.clip1._xscale=400
    }

Mais je ne trouve pas la bonne syntaxe...
0
pierro3f4 Messages postés 3 Date d'inscription mardi 27 janvier 2009 Statut Membre Dernière intervention 1 février 2009
1 févr. 2009 à 22:15
ok, on m'a répondu sur un autre forum... ouf!

Je laisse la soluce ici, ca peut toujours servir à quelqu'un... Il faut spécifier this avant d'utiliser la propriété parent. C'est simple mais je n'avais pas la bonne syntaxe. voici donc le code :

var tableaum:Array = new Array("villette", "sysD", "animdistillerie");
var abcisse:Number = 10;
var curClip:MovieClip = null;

for (var sName in tableaum)
{  
    curClip = this.attachMovie('conteneur', sName, this.getNextHighestDepth());
    curClip._x=abcisse;
    abcisse+=200;
    
    trace( curClip.contenu1.contenu2.bouton );
    curClip.contenu1.contenu2.bouton.onRelease = function()
    {
        trace("on a cliqué sur: " + this);
        trace(this._parent._parent._parent.clip1);
        this._parent._parent._parent.clip1._xscale=400;
    };
}
0