Créer et manipuler des points (boucle) avec Actionscript

Résolu
michel_roger Messages postés 60 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 18 août 2006 - 22 juin 2006 à 00:22
michel_roger Messages postés 60 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 18 août 2006 - 23 juin 2006 à 01:29
Bonsoir,
J'essaye en ce moment de créer une page simple avec une anim flash.
Sur les actions de ma frame principale, je charge un document xml. Je désire créer des points ou des carrés afin de les placer sur une carte. Je récupère les coordonnées x et y dans mon code xml.
Ce qui donne :
// Création de l'objet XML
data=new XML();
data.ignoreWhite = true;
data.onLoad = setPoints;
// Déclaration de l'évènement lors du chargement du fichier xml
function setPoints() {
    // J'utilise cette boucle pour parcourir tous les points à afficher
    for(i=0;i < data.firstChild.childNodes.length;i++) {
        // ici on récupère les coordonnées
        curX = data.firstChild.childNodes[i].attributes.x;
        curY = data.firstChild.childNodes[i].attributes.y;
       // affichage de debug, les coordonnées s'affichent bien dans le champs texte
        info.text += curX+" "+curY+"\n";
       // J'ai créé au préalable un MovieClip 'point' (juste un cercle)
       // C'est lui que je voudrais copier à chaque nouveau point à afficher

        var mc = duplicateMovieClip("point", "mc", 1);
       // Ici je bloque complet, comment créer et placer un MovieClip dans la carte ?
       // Vu qu'ils sont créés dynamiquement, je ne sais pas comment y accéder,
       // J'ai l'impression que le même objet est déplacé mais pas dupliqué.
       // J'ai au moins un point avec des coordonnées différentes des autres
        setProperty("mc", _x, curX);
        setProperty("mc", _y, curY);
        setProperty("mc", _visible, true);
    }
}

Je viens d'essayer avec setProperty("mc"+i, _x, curX); afin de différencier chaque nom de point mais toujours un seul point affiché.
Merci d'avance pour votre aide et bonne nuit

3 réponses

kingcobra Messages postés 316 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 19 septembre 2012
22 juin 2006 à 10:33
salut !

C'est normal.
duplicateMovieClip("point", "mc"+i, 1);
Tout est bon sauf le 1 qui désigne la profondeur et un seul objet peut etre assigner a une profondeur donnée.
Donc au lieu de mettre "1" mets plutot "i". ce qui aura pour but d'augmenter aussi cette profondeur.
i peut aussi être remplacé par this.getNextHighestDepth() qui cherche la prochaine profondeur disponible.

Ensuite, au lieu de setProperty("mc"+i, _x, curX);  tu as :
this["mc"+i]._x = curX; //attention this est le nom du clip dans lequel se trouve mci, ça peut etre _root ou le nom d'un clip.
qui est largement plus utilisé. (marche aussi avec toutes les autres propriétés : _x _y _alpha _visible _width _height etc...)

J'espere que c'était ça. A +

KiNgCoBrA
3
michel_roger Messages postés 60 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 18 août 2006
22 juin 2006 à 00:31
Apparemment le même MovieClip (celui que j'ai créé auparavant et que je duplique) est déplacé plusieurs fois et non ses copies. Même si je fais :
// Avec i variable incrémentée par le for()
var mc = duplicateMovieClip("point", "mc"+i, 1); ou duplicateMovieClip("point", "mc"+i, 1);
setProperty("mc"+i, _x, curX);
setProperty("mc"+i, _y, curY);
setProperty("mc"+i, _visible, true);
0
michel_roger Messages postés 60 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 18 août 2006
23 juin 2006 à 01:29
De la pure balle. Ca fonctionne nickel maintenant avec _root["mc"+i].attribut (_x, _y, _visible, ...).
Merci beaucoup KiNgCoBrA.
Bon we ;)
0
Rejoignez-nous